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

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

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

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

Note

ClientCredentials クラスの SupportInteractive プロパティが true に設定されており、ローカル発行者のアドレスが指定されておらず、<wsFederationHttpBinding> または他のフェデレーション バインディングによって指定された発行者のアドレスが http://schemas.xmlsoap.org/ws/2005/05/identity/issuer/selfhttp://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous、または null である場合は、Windows CardSpace 発行者が使用されます。

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

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

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

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

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

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

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

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

    itcc.LocalIssuerAddress = new EndpointAddress(
        new Uri("http://fabrikam.com/sts"),
        EndpointIdentity.CreateDnsIdentity("fabrikam.com"),
        addressHeaders);
    
    itcc.LocalIssuerAddress = New EndpointAddress(New Uri("http://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> 要素を設定し、正しいアドレスをローカル発行者に指定するために必要な追加ヘッダーを指定します。

.NET Framework のセキュリティ

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

関連項目