Procédure : configurer un émetteur local
Cette rubrique décrit comment configurer un client afin d'utiliser un émetteur local pour les jetons émis.
Lorsqu'un client communique avec un service fédéré, il arrive souvent que le service spécifie l'adresse du service d'émission de jeton de sécurité qui est attendue pour émettre le jeton que le client utilisera pour s'authentifier auprès du service fédéré. Dans certains cas, le client peut être configuré pour utiliser un émetteur local.
Windows Communication Foundation (WCF) utilise un émetteur local dans les cas où l’adresse de l’émetteur d’une liaison fédérée est http://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous
ou null
. Dans ce cas, vous devez configurer ClientCredentials avec l’adresse de l’émetteur local et la liaison à utiliser pour communiquer avec celui-ci.
Notes
Si la propriété SupportInteractive de la classe ClientCredentials
est définie sur true
, qu’aucune adresse d’émetteur local n’est spécifiée et que l’adresse d’émetteur spécifiée par <wsFederationHttpBinding> ou une autre liaison fédérée est http://schemas.xmlsoap.org/ws/2005/05/identity/issuer/self
, http://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous
ou null
, l’émetteur Windows CardSpace est utilisé.
Pour configurer l'émetteur local dans le code
Créez une variable de type IssuedTokenClientCredential
Affectez à la variable la valeur de l'instance retournée par la propriété IssuedToken de la classe
ClientCredentials
. Cette instance est retournée par la propriété ClientCredentials du client (héritée de ClientBase<TChannel>) ou la propriété Credentials de ChannelFactory :IssuedTokenClientCredential itcc = client.ClientCredentials.IssuedToken;
Dim itcc As IssuedTokenClientCredential = client.ClientCredentials.IssuedToken
Affectez une nouvelle instance de LocalIssuerAddress à la propriété EndpointAddress, avec l'adresse de l'émetteur local comme argument au constructeur.
itcc.LocalIssuerAddress = new EndpointAddress("http://fabrikam.com/sts");
itcc.LocalIssuerAddress = New EndpointAddress("http://fabrikam.com/sts")
Ou bien, créez une instance Uri comme argument au constructeur.
itcc.LocalIssuerAddress = new EndpointAddress(new Uri("http://fabrikam.com/sts"), addressHeaders);
itcc.LocalIssuerAddress = New EndpointAddress( _ New Uri("http://fabrikam.com/sts"), addressHeaders)
Le paramètre
addressHeaders
est un tableau d’instances AddressHeader, comme indiqué ci-après.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)
Définissez la liaison de l’émetteur local à l’aide de la propriété LocalIssuerBinding.
itcc.LocalIssuerBinding = new WSHttpBinding("LocalIssuerBinding");
itcc.LocalIssuerBinding = New WSHttpBinding("LocalIssuerBinding")
facultatif. Ajoutez des comportements de point de terminaison configurés pour l’émetteur local en ajoutant ces comportements à la collection retournée par la propriété LocalIssuerChannelBehaviors.
itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior);
itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior)
Pour configurer l'émetteur local dans la configuration
Créez un élément <localIssuer> en tant qu’enfant de l’élément <issuedToken> qui est lui-même un enfant de l’élément clientCredentials<> dans un comportement de point de terminaison.
Affectez à l'attribut
address
l'adresse de l'émetteur local qui acceptera des demandes de jeton.Affectez aux attributs
binding
etbindingConfiguration
des valeurs référençant la liaison appropriée à utiliser lors de la communication avec le point de terminaison de l'émetteur local.facultatif. Définissez l’élément <identity> en tant qu’enfant de l’élément
<localIssuer>
et spécifiez les informations d’identité de l’émetteur local.Optionnel. Définissez l’élément <headers> en tant qu’enfant de l’élément
<localIssuer>
et spécifiez des en-têtes supplémentaires requis pour adresser correctement l’émetteur local.
Sécurité du .NET Framework
Notez que si une liaison et une adresse d’émetteur sont spécifiées pour une liaison donnée, l’émetteur local n’est pas utilisé pour les points de terminaison qui utilisent cette liaison. Les clients qui prévoient d'utiliser systématiquement l'émetteur local doivent s'assurer de ne pas utiliser de liaison de ce type ou de modifier la liaison afin que l'adresse de l'émetteur soit null
.