Partilhar via


Modos de autenticação SecurityBindingElement

O Windows Communication Foundation (WCF) fornece vários modos pelos quais clientes e serviços se autenticam uns aos outros. Você pode criar elementos de vinculação de segurança para esses modos de autenticação usando métodos estáticos na classe ou por meio da SecurityBindingElement configuração. Este tópico descreve brevemente os 18 modos de autenticação.

Para obter um exemplo de como usar o elemento para um dos modos de autenticação, consulte Como criar um SecurityBindingElement para um modo de autenticação especificado.

Programação de Configuração Básica

O procedimento a seguir descreve como definir o modo de autenticação em um arquivo de configuração.

Para definir o modo de autenticação na configuração

  1. Para o elemento bindings>, adicione um< customBinding>.<

  2. Como um elemento filho, adicione um <elemento binding> ao <customBinding> elemento .

  3. Adicione um <security> elemento ao <binding> elemento .

  4. Defina o authenticationMode atributo para um dos valores descritos abaixo. Por exemplo, o código a seguir define o modo como AnonymousForCertificate.

    <bindings>
      <customBinding>
        <binding name="SecureCustomBinding">
         <security authenticationMode ="AnonymousForCertificate" />
        </binding>
      </customBinding>
    </bindings>
    

Para definir o modo programaticamente

  1. Determine o tipo de retorno, que pode ser um dos seguintes: SymmetricSecurityBindingElement, TransportSecurityBindingElement, AsymmetricSecurityBindingElement, ou SecurityBindingElement.

  2. Chame o método estático apropriado da SecurityBindingElement classe. Por exemplo, o código a seguir chama o CreateAnonymousForCertificateBindingElement método.

    SymmetricSecurityBindingElement b =
        SecurityBindingElement.
        CreateAnonymousForCertificateBindingElement();
    
    Dim b As SymmetricSecurityBindingElement = _
    SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
    
  3. Use o elemento binding para criar a associação personalizada. Para obter mais informações, consulte Ligações personalizadas.

Descrições do modo

AnonymousForCertificate

Com esse modo de autenticação, o cliente é anônimo e o serviço é autenticado usando um certificado X.509. O elemento de vinculação de segurança é retornado SymmetricSecurityBindingElement pelo CreateAnonymousForCertificateBindingElement método. Como alternativa, defina o authenticationMode <security> atributo do elemento como AnonymousForCertificate.

AnonymousForSslNegociado

Com esse modo de autenticação, o cliente é anônimo e o serviço é autenticado usando um certificado X.509 que é negociado em tempo de execução. O elemento de vinculação de segurança é retornado SymmetricSecurityBindingElement pelo CreateSslNegotiationBindingElement método quando um valor de false é passado para o primeiro parâmetro. Como alternativa, defina o authenticationMode atributo como AnonymousForSslNegotiated.

CertificateOverTransport

Com esse modo de autenticação, o cliente autentica usando um certificado X.509 que aparece na camada SOAP como um token de suporte de endosso; ou seja, um token que assina a assinatura da mensagem. O serviço é autenticado usando um certificado X.509 na camada de transporte. O elemento de vinculação de segurança é retornado TransportSecurityBindingElement pelo CreateCertificateOverTransportBindingElement método. Como alternativa, defina o authenticationMode atributo como CertificateOverTransport.

IssuedToken

Com este modo de autenticação, o cliente não se autentica no serviço, como tal; em vez disso, o cliente se autentica em um serviço de token de segurança e recebe um token SAML, que ele apresenta ao servidor para provar seu conhecimento de uma chave compartilhada. O serviço não é autenticado no cliente, como tal, mas o serviço de token de segurança criptografa a chave compartilhada como parte do token emitido para que apenas o serviço possa descriptografar a chave. O elemento de vinculação de segurança é retornado SymmetricSecurityBindingElement pelo CreateIssuedTokenBindingElement método. Como alternativa, defina o authenticationMode atributo como IssuedToken.

IssuedTokenForCertificate

Com este modo de autenticação, o cliente não se autentica no serviço, como tal; em vez disso, o cliente se autentica em um serviço de token de segurança e recebe um token SAML, que ele apresenta ao servidor para provar seu conhecimento de uma chave compartilhada. O token emitido aparece na camada SOAP como um token de suporte de endosso ou um token de portador; ou seja, um token que assina a assinatura da mensagem. O serviço é autenticado no cliente usando um certificado X.509. O elemento de vinculação de segurança é retornado SymmetricSecurityBindingElement pelo CreateIssuedTokenForCertificateBindingElement método. Como alternativa, defina o authenticationMode atributo como IssuedTokenForCertificate.

IssuedTokenForSslNegociado

Com este modo de autenticação, o cliente não se autentica no serviço, como tal; em vez disso, o cliente se autentica em um serviço de token de segurança e recebe um token SAML, que ele apresenta ao servidor para provar seu conhecimento de uma chave compartilhada. O token emitido aparece na camada SOAP como um token de suporte de endosso ou um token de portador; ou seja, um token que assina a assinatura da mensagem. O serviço é autenticado usando um certificado X.509. O elemento de vinculação de segurança é retornado SymmetricSecurityBindingElement pelo CreateIssuedTokenForSslBindingElement método. Como alternativa, defina o authenticationMode atributo como IssuedTokenForSslNegotiated.

IssuedTokenOverTransport

Com este modo de autenticação, o cliente não se autentica no serviço, como tal; em vez disso, o cliente se autentica em um serviço de token de segurança e recebe um token SAML, que ele apresenta ao servidor para provar seu conhecimento de uma chave compartilhada. O token emitido aparece na camada SOAP como um token de suporte de endosso ou um token de portador; ou seja, um token que assina a assinatura da mensagem. O serviço é autenticado usando um certificado X.509 na camada de transporte. O elemento de vinculação de segurança é retornado TransportSecurityBindingElement pelo CreateIssuedTokenOverTransportBindingElement método. Como alternativa, defina o authenticationMode atributo como IssuedTokenOverTransport.

Kerberos

Com esse modo de autenticação, o cliente se autentica no serviço usando um tíquete Kerberos. Esse mesmo tíquete também fornece autenticação de servidor. O elemento de vinculação de segurança é retornado SymmetricSecurityBindingElement pelo CreateKerberosBindingElement método. Como alternativa, defina o authenticationMode atributo como Kerberos.

Nota

Para usar esse modo de autenticação, a conta de serviço deve estar associada a um SPN (nome da entidade de serviço). Para fazer isso, execute o serviço na conta SERVIÇO DE REDE ou na conta SISTEMA LOCAL. Como alternativa, use a ferramenta SetSpn.exe para criar um SPN para a conta de serviço. Em ambos os casos, o cliente deve usar o SPN correto no <elemento servicePrincipalName> ou usando o EndpointAddress construtor. Para obter mais informações, consulte Identidade e autenticação do serviço.

Nota

Quando o modo de Kerberos autenticação é usado, os Anonymous níveis e Delegation representação não são suportados.

KerberosOverTransport

Com esse modo de autenticação, o cliente se autentica no serviço usando um tíquete Kerberos. O token Kerberos aparece na camada SOAP como um token de suporte de endosso; ou seja, um token que assina a assinatura da mensagem. O serviço é autenticado usando um certificado X.509 na camada de transporte. O elemento de vinculação de segurança é retornado TransportSecurityBindingElement pelo CreateKerberosOverTransportBindingElement método. Como alternativa, defina o authenticationMode atributo como KerberosOverTransport.

Nota

Para usar esse modo de autenticação, a conta de serviço deve estar associada a um SPN. Para fazer isso, execute o serviço na conta SERVIÇO DE REDE ou na conta SISTEMA LOCAL. Como alternativa, use a ferramenta SetSpn.exe para criar um SPN para a conta de serviço. Em ambos os casos, o cliente deve usar o SPN correto no <elemento servicePrincipalName> ou usando o EndpointAddress construtor. Para obter mais informações, consulte Identidade e autenticação do serviço.

Certidão Mútua

Com esse modo de autenticação, o cliente autentica usando um certificado X.509 que aparece na camada SOAP como um token de suporte de endosso; ou seja, um token que assina a assinatura da mensagem. O serviço também é autenticado usando um certificado X.509. O elemento de vinculação de segurança é retornado SymmetricSecurityBindingElement pelo CreateMutualCertificateBindingElement método. Como alternativa, defina o authenticationMode atributo como MutualCertificate.

MutualCertificateDuplex

Com esse modo de autenticação, o cliente autentica usando um certificado X.509 que aparece na camada SOAP como um token de suporte de endosso; ou seja, um token que assina a assinatura da mensagem. O serviço também é autenticado usando um certificado X.509. A ligação é retornada AsymmetricSecurityBindingElement CreateMutualCertificateDuplexBindingElement pelo método. Como alternativa, defina o authenticationMode atributo como MutualCertificateDuplex.

MutualSslNegociado

Com esse modo de autenticação, o cliente e o serviço são autenticados usando certificados X.509. O elemento de vinculação de segurança é retornado SymmetricSecurityBindingElement pelo CreateSslNegotiationBindingElement método quando um valor de true é passado para o primeiro parâmetro. Como alternativa, defina o authenticationMode atributo como MutualSslNegotiated.

SecureConversation

O elemento de vinculação de segurança é retornado SymmetricSecurityBindingElement pelo CreateSecureConversationBindingElement método. Esse método usa um SecurityBindingElement como parâmetro, que é usado durante a inicialização para estabelecer a sessão segura. Como alternativa, defina o authenticationMode atributo como SecureConversation.

Se nenhuma ligação de bootstrap for especificada, o SspiNegotiated modo de autenticação será usado para bootstrap.

SspiNegociação

Com esse modo de autenticação, um protocolo de negociação é usado para executar a autenticação de cliente e servidor. Kerberos é usado, se possível; caso contrário, NT LanMan (NTLM) é usado. O elemento de vinculação de segurança é retornado SymmetricSecurityBindingElement pelo CreateSspiNegotiationBindingElement método. Como alternativa, defina o authenticationMode atributo como SspiNegotiated.

SspiNegotiatedOverTransport

Com esse modo de autenticação, um protocolo de negociação é usado para executar a autenticação de cliente e servidor. O protocolo Kerberos é usado, se possível; caso contrário, o NTLM será usado. O token resultante aparece na camada SOAP como um token de suporte de endosso; ou seja, um token que assina a assinatura da mensagem. O serviço é adicionalmente autenticado na camada de transporte por um certificado X.509. O elemento de vinculação de segurança é retornado TransportSecurityBindingElement pelo CreateSspiNegotiationOverTransportBindingElement método. Como alternativa, defina o authenticationMode atributo como SspiNegotiatedOverTransport.

UserNameForCertificate

Com esse modo de autenticação, o cliente se autentica no serviço usando um token de nome de usuário que aparece na camada SOAP como um token de suporte assinado; ou seja, um token que é assinado pela assinatura da mensagem. O serviço é autenticado no cliente usando um certificado X.509. O elemento de vinculação de segurança é retornado SymmetricSecurityBindingElement pelo CreateUserNameForCertificateBindingElement método. Como alternativa, defina o authenticationMode atributo como UserNameForCertificate.

Para o modo de autenticação, o cliente e o serviço devem estar usando o UserNameForCertificate WS-Security 1.1.

UserNameForSslNegotiated

Com esse modo de autenticação, o cliente é autenticado usando um token de nome de usuário que aparece na camada SOAP como um token de suporte assinado; ou seja, um token que é assinado pela assinatura da mensagem. O serviço é autenticado usando um certificado X.509. O elemento de vinculação de segurança é retornado SymmetricSecurityBindingElement pelo CreateUserNameForSslBindingElement método. Como alternativa, defina o authenticationMode atributo como UserNameForSslNegotiated.

UserNameOverTransport

Com esse modo de autenticação, o cliente autentica usando um token de nome de usuário que aparece na camada SOAP como um token de suporte assinado; ou seja, um token que é assinado pela assinatura da mensagem. O serviço é autenticado usando um certificado X.509 na camada de transporte. O elemento de vinculação de segurança é retornado TransportSecurityBindingElement pelo CreateUserNameOverTransportBindingElement método. Como alternativa, defina o authenticationMode atributo como UserNameOverTransport.

Consulte também