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
Para o elemento bindings>, adicione um< customBinding>.<
Como um elemento filho, adicione um <elemento binding> ao
<customBinding>
elemento .Adicione um
<security>
elemento ao<binding>
elemento .Defina o
authenticationMode
atributo para um dos valores descritos abaixo. Por exemplo, o código a seguir define o modo comoAnonymousForCertificate
.<bindings> <customBinding> <binding name="SecureCustomBinding"> <security authenticationMode ="AnonymousForCertificate" /> </binding> </customBinding> </bindings>
Para definir o modo programaticamente
Determine o tipo de retorno, que pode ser um dos seguintes: SymmetricSecurityBindingElement, TransportSecurityBindingElement, AsymmetricSecurityBindingElement, ou SecurityBindingElement.
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()
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
.