Como: configurar um emissor local
Este tópico descreve como configurar um cliente para usar um emissor local para tokens emitidos.
Geralmente, quando um cliente se comunica com um serviço federado, o serviço especifica o endereço do serviço de token de segurança que deverá emitir o token que o cliente usará para se autenticar no serviço federado. Em determinadas situações, o cliente pode ser configurado para usar um emissor local.
O WCF (Windows Communication Foundation) usa um emissor local nos casos em que o endereço do emissor de uma associação federada é http://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous
ou null
. Nesses casos, você deve configurar ClientCredentials com o endereço do emissor local e a associação a ser usada para se comunicar com esse emissor.
Observação
Se a propriedade SupportInteractive da classe ClientCredentials
estiver definida como true
, um endereço do emissor local não for especificado e o endereço do emissor especificado pelo <wsFederationHttpBinding> ou outra associação federada for http://schemas.xmlsoap.org/ws/2005/05/identity/issuer/self
, http://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous
ou null
, o emissor do CardSpace do Windows será usado.
Para configurar o emissor local no código
Criar uma variável do tipo IssuedTokenClientCredential
Defina a variável para a instância retornada da propriedade IssuedToken da classe
ClientCredentials
. Essa instância é retornada pela propriedade ClientCredentials do cliente (herdada de ClientBase<TChannel>) ou pela propriedade Credentials do ChannelFactory:IssuedTokenClientCredential itcc = client.ClientCredentials.IssuedToken;
Dim itcc As IssuedTokenClientCredential = client.ClientCredentials.IssuedToken
Defina a propriedade LocalIssuerAddress como uma nova instância do EndpointAddress, com o endereço do emissor local como um argumento para o construtor.
itcc.LocalIssuerAddress = new EndpointAddress("http://fabrikam.com/sts");
itcc.LocalIssuerAddress = New EndpointAddress("http://fabrikam.com/sts")
Como alternativa, crie uma nova instância Uri como um argumento para o construtor.
itcc.LocalIssuerAddress = new EndpointAddress(new Uri("http://fabrikam.com/sts"), addressHeaders);
itcc.LocalIssuerAddress = New EndpointAddress( _ New Uri("http://fabrikam.com/sts"), addressHeaders)
O parâmetro
addressHeaders
é uma matriz de instâncias AddressHeader, conforme mostrado.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)
Defina a associação para o emissor local usando a propriedade LocalIssuerBinding.
itcc.LocalIssuerBinding = new WSHttpBinding("LocalIssuerBinding");
itcc.LocalIssuerBinding = New WSHttpBinding("LocalIssuerBinding")
Opcional. Adicione comportamentos de ponto de extremidade configurados para o emissor local adicionando esses comportamentos à coleção retornada pela propriedade LocalIssuerChannelBehaviors.
itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior);
itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior)
Para configurar o emissor local no código
Crie um elemento <localIssuer> como um filho do elemento <issuedToken> que é um filho do elemento <clientCredentials> em um comportamento de ponto de extremidade.
Defina o atributo
address
para o endereço do emissor local que aceitará solicitações de token.Defina os atributos
binding
ebindingConfiguration
como valores que fazem referência à associação apropriada a ser usada ao se comunicar com o ponto de extremidade do emissor local.Opcional. Defina o elemento <identity> como um filho do elemento
<localIssuer>
e especifique informações de identidade para o emissor local.Opcional. Defina o elemento <headers> como um filho do elemento
<localIssuer>
e especifique cabeçalhos adicionais necessários para abordar corretamente o emissor local.
Segurança do .NET Framework
Note que, se um endereço do emissor e a associação forem especificados para uma associação fornecida, o emissor local não será usado para os pontos de extremidade que usam essa associação. Os clientes que pretendem sempre usar o emissor local devem garantir que não usem uma associação como essa ou que modifiquem a associação, de modo que o endereço do emissor seja null
.