Como: Configurar um emissor local
Este tópico descreve como configurar um cliente para usar um emissor local para tokens emitidos.
Muitas vezes, 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 se espera que emita o token que o cliente usará para autenticar-se no serviço federado. Em determinadas situações, o cliente pode ser configurado para usar um emissor local.
O Windows Communication Foundation (WCF) 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 o ClientCredentials com o endereço do emissor local e a associação a ser usada para se comunicar com esse emissor.
Nota
Se a SupportInteractive propriedade da classe estiver definida como true
, um endereço de emissor local não será especificado e o endereço do ClientCredentials
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 for null
, então o emissor do Windows CardSpace será usado.
Para configurar o emissor local no código
Criar uma variável do tipo IssuedTokenClientCredential
Defina a variável como a instância retornada da IssuedToken propriedade da
ClientCredentials
classe. Essa instância é retornada pela ClientCredentials propriedade do cliente (herdada de ClientBase<TChannel>) ou pela Credentials propriedade do ChannelFactory:IssuedTokenClientCredential itcc = client.ClientCredentials.IssuedToken;
Dim itcc As IssuedTokenClientCredential = client.ClientCredentials.IssuedToken
Defina a LocalIssuerAddress propriedade 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 Uri instância 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
addressHeaders
parâmetro é uma matriz de AddressHeader instâncias, 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 vinculação para o emissor local usando a LocalIssuerBinding propriedade.
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 LocalIssuerChannelBehaviors pela propriedade.
itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior);
itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior)
Para configurar o emissor local na configuração
Crie um <elemento localIssuer> como filho do <elemento issuedToken que é,> ele próprio, <filho do elemento clientCredentials> em um comportamento de ponto de extremidade.
Defina o
address
atributo para o endereço do emissor local que aceitará solicitações de token.Defina os
binding
atributos 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 de identidade> como filho do
<localIssuer>
elemento e especifique informações de identidade para o emissor local.Opcional. Defina o <elemento headers> como filho do
<localIssuer>
elemento e especifique cabeçalhos adicionais que são necessários para abordar corretamente o emissor local.
Segurança do .NET Framework
Observe que, se um endereço de emissor e uma associação forem especificados para uma determinada ligação, o emissor local não será usado para pontos de extremidade que usam essa ligação. Os clientes que esperam utilizar sempre o emitente local devem assegurar que não utilizam essa ligação ou que a modificam de modo a que o endereço do emitente seja null
.