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/Anonymousou for null, então o emissor do Windows CardSpace será usado.

Para configurar o emissor local no código

  1. Criar uma variável do tipo IssuedTokenClientCredential

  2. 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
    
  3. 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)
    
  4. Defina a vinculação para o emissor local usando a LocalIssuerBinding propriedade.

    itcc.LocalIssuerBinding = new WSHttpBinding("LocalIssuerBinding");
    
    itcc.LocalIssuerBinding = New WSHttpBinding("LocalIssuerBinding")
    
  5. 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

  1. Crie um <elemento localIssuer> como filho do <elemento issuedToken que é,> ele próprio, <filho do elemento clientCredentials> em um comportamento de ponto de extremidade.

  2. Defina o address atributo para o endereço do emissor local que aceitará solicitações de token.

  3. Defina os binding atributos e bindingConfiguration como valores que fazem referência à associação apropriada a ser usada ao se comunicar com o ponto de extremidade do emissor local.

  4. Opcional. Defina o <elemento de identidade> como filho do <localIssuer> elemento e especifique informações de identidade para o emissor local.

  5. 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.

Consulte também