方法 : ローカル発行者を設定する

ここでは、発行済みトークンに対してローカル発行者を使用するようにクライアントを構成する方法を説明します。

クライアントがフェデレーション サービスと通信する場合、クライアントが自分をフェデレーション サービスに対して認証するときに使用するトークンの発行元となるセキュリティ トークン サービスのアドレスが、サービスによって指定されることがよくあります。特定の状況では、クライアントがローカル発行者を使用するように構成されることがあります。

フェデレーション バインディングの発行者アドレスが https://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous または null である場合、Windows Communication Foundation (WCF) はローカル発行者を使用します。そのような場合は、ローカルの発行者およびバインディングのアドレスと共に ClientCredentials を構成し、その発行者との通信に使用する必要があります。

Aa347715.note(ja-jp,VS.100).gif注 :
ClientCredentials クラスの SupportInteractive プロパティが true に設定されており、ローカル発行者アドレスが指定されておらず、wsFederationHttpBinding elementまたは他のフェデレーション バインディングで指定される発行者アドレスが https://schemas.xmlsoap.org/ws/2005/05/identity/issuer/self、https://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous、または null である場合、Windows の CardSpace 発行者が使用されます。

コードでローカル発行者を構成するには

  1. IssuedTokenClientCredential 型の変数を作成します。

  2. ClientCredentials クラスの IssuedToken プロパティから返されるインスタンスに変数を設定します。このインスタンスは、(ClientBase から継承された) クライアントの ClientCredentials プロパティ、または ChannelFactoryCredentials プロパティから次のように返されます。

    Dim itcc As IssuedTokenClientCredential = client.ClientCredentials.IssuedToken
    
    IssuedTokenClientCredential itcc = client.ClientCredentials.IssuedToken;
    
  3. LocalIssuerAddress プロパティを EndpointAddress の新規インスタンスに設定します。このとき、次のようにコンストラクターに対する引数としてローカル発行者のアドレスを使用します。

    itcc.LocalIssuerAddress = New EndpointAddress("https://fabrikam.com/sts")
    
    itcc.LocalIssuerAddress = new EndpointAddress("https://fabrikam.com/sts");
    

    あるいは、次のように新規の Uri インスタンスをコンストラクターへの引数として作成します。

    itcc.LocalIssuerAddress = New EndpointAddress( _
    New Uri("https://fabrikam.com/sts"), addressHeaders)
    
    itcc.LocalIssuerAddress = new EndpointAddress(new Uri("https://fabrikam.com/sts"),
        addressHeaders);
    

    次に示すように、 addressHeaders パラメーターは AddressHeader インスタンスの配列です。

    itcc.LocalIssuerAddress = New EndpointAddress(New Uri("https://fabrikam.com/sts"), _
    EndpointIdentity.CreateDnsIdentity("fabrikam.com"), addressHeaders)
    
    itcc.LocalIssuerAddress = new EndpointAddress(
        new Uri("https://fabrikam.com/sts"),
        EndpointIdentity.CreateDnsIdentity("fabrikam.com"),
        addressHeaders);
    
  4. LocalIssuerBinding プロパティを使用して、ローカル発行者のバインディングを次のように設定します。

    itcc.LocalIssuerBinding = New WSHttpBinding("LocalIssuerBinding")
    
    itcc.LocalIssuerBinding = new WSHttpBinding("LocalIssuerBinding");
    
  5. 省略可能。ローカル発行者に対して構成したエンドポイントの動作を LocalIssuerChannelBehaviors プロパティから返されるコレクションに追加することにより、この動作を次のように追加します。

    itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior)
    
    itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior);
    

構成でローカル発行者を構成するには

  1. その要素自体がエンドポイント動作の <clientCredentials> 要素の子要素である <issuedToken> 要素の子として、<localIssuer> 要素を作成します。

  2. address 属性を、トークン要求を受け入れるローカル発行者のアドレスに設定します。

  3. binding および bindingConfiguration 属性を、ローカル発行者のエンドポイントと通信するときに使用する適切なバインディングを参照する値に設定します。

  4. 省略可能。<localIssuer> 要素の子要素として <identity> 要素を設定し、ローカル発行者の ID 情報を指定します。

  5. 省略可能。<localIssuer> 要素の子要素として <headers> 要素を設定し、ローカル発行者を正しくアドレス指定するために必要な追加ヘッダーを指定します。

セキュリティ

特定のバインディングに対して発行者アドレスとバインディングが指定されている場合、ローカル発行者はこのバインディングを使用するエンドポイントには使用されません。ローカル発行者を常に使用する必要があるクライアントには、このようなバインディングが使用されることがないこと、または発行者アドレスが null となるようにクライアントによってバインディングが変更されることが保証されている必要があります。

参照

処理手順

方法 : フェデレーション サービスで資格情報を設定する
方法 : フェデレーション クライアントを作成する
方法 : WSFederationHttpBinding を作成する