SecurityBindingElement Authentication Modes
O WCF (Windows Communication Foundation) fornece vários modos pelos quais clientes e serviços se autenticam entre si. Você pode criar elementos de associação de segurança para esses modos de autenticação usando métodos estáticos na classe SecurityBindingElement ou por meio de 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
Ao elemento <bindings> adicione um <customBinding>.
Como um elemento filho, adicione um elemento <binding> ao elemento
<customBinding>
.Adicione um elemento
<security>
ao elemento<binding>
.Defina o atributo
authenticationMode
como um dos valores descritos a seguir. Por exemplo, o código a seguir define o modo comoAnonymousForCertificate
.<bindings> <customBinding> <binding name="SecureCustomBinding"> <security authenticationMode ="AnonymousForCertificate" /> </binding> </customBinding> </bindings>
Definir o modo de forma programática
Determine o tipo de retorno, que pode ser um dos seguintes: SymmetricSecurityBindingElement, TransportSecurityBindingElement, AsymmetricSecurityBindingElement ou SecurityBindingElement.
Chame o método estático apropriado da classe SecurityBindingElement. Por exemplo, o código a seguir chama o método CreateAnonymousForCertificateBindingElement.
SymmetricSecurityBindingElement b = SecurityBindingElement. CreateAnonymousForCertificateBindingElement();
Dim b As SymmetricSecurityBindingElement = _ SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
Use o elemento de associação para criar a associação personalizada. Para obter mais informações, veja Associações personalizadas.
Descrições de modo
AnonymousForCertificate
Com esse modo de autenticação, o cliente é anônimo e o serviço é autenticado por meio de um certificado X.509. O elemento de associação de segurança é um SymmetricSecurityBindingElement retornado pelo método CreateAnonymousForCertificateBindingElement. Defina o atributo authenticationMode
do elemento <security>
como AnonymousForCertificate
.
AnonymousForSslNegotiated
Com esse modo de autenticação, o cliente é anônimo e o serviço é autenticado por meio de um certificado X.509, que é negociado no tempo de execução. O elemento de associação de segurança é um SymmetricSecurityBindingElement retornado pelo método CreateSslNegotiationBindingElement quando um valor de false
é passado para o primeiro parâmetro. Como alternativa, defina o atributo authenticationMode
como AnonymousForSslNegotiated
.
CertificateOverTransport
Com esse modo de autenticação, o cliente se autentica por meio de um certificado X.509 que é exibido na camada SOAP como um token de suporte de endosso, ou seja, um token que assina a assinatura da mensagem. O serviço é autenticado por meio de um certificado X.509 na camada de transporte. O elemento de associação de segurança é um TransportSecurityBindingElement retornado pelo método CreateCertificateOverTransportBindingElement. Como alternativa, defina o atributo authenticationMode
como CertificateOverTransport
.
IssuedToken
Com esse 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 para o cliente como tal, mas o serviço de token de segurança criptografa a chave compartilhada como parte do token emitido de modo que somente o serviço possa descriptografar a chave. O elemento de associação de segurança é um SymmetricSecurityBindingElement retornado pelo método CreateIssuedTokenBindingElement. Como alternativa, defina o atributo authenticationMode
como IssuedToken
.
IssuedTokenForCertificate
Com esse 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 endossador ou um token de portador; ou seja, um token que assina a assinatura da mensagem. O serviço é autenticado no cliente por meio de um certificado X.509. O elemento de associação de segurança é um SymmetricSecurityBindingElement retornado pelo método CreateIssuedTokenForCertificateBindingElement. Como alternativa, defina o atributo authenticationMode
como IssuedTokenForCertificate
.
IssuedTokenForSslNegotiated
Com esse 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 endossador ou um token de portador; ou seja, um token que assina a assinatura da mensagem. O serviço é autenticado por meio de um certificado X.509. O elemento de associação de segurança é um SymmetricSecurityBindingElement retornado pelo método CreateIssuedTokenForSslBindingElement. Como alternativa, defina o atributo authenticationMode
como IssuedTokenForSslNegotiated
.
IssuedTokenOverTransport
Com esse 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 endossador ou um token de portador; ou seja, um token que assina a assinatura da mensagem. O serviço é autenticado por meio de um certificado X.509 na camada de transporte. O elemento de associação de segurança é um TransportSecurityBindingElement
retornado pelo método CreateIssuedTokenOverTransportBindingElement. Como alternativa, defina o atributo authenticationMode
como IssuedTokenOverTransport
.
Kerberos
Com esse modo de autenticação, o cliente é autenticado no serviço por meio de um tíquete Kerberos. Esse mesmo tíquete também fornece a autenticação de servidor. O elemento de associação de segurança é um SymmetricSecurityBindingElement
retornado pelo método CreateKerberosBindingElement. Como alternativa, defina o atributo authenticationMode
como Kerberos
.
Observação
Para usar esse modo de autenticação, a conta de serviço deve ser associada a um SPN (nome da entidade de serviço). Para fazer isso, execute o serviço na conta NETWORK SERVICE ou na conta do 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 construtor EndpointAddress. Para saber mais, confira Identidade de serviço e autenticação.
Observação
Quando o modo de autenticação Kerberos
é usado, não há suporte para os níveis de representação Anonymous e Delegation.
KerberosOverTransport
Com esse modo de autenticação, o cliente é autenticado no serviço por meio de um tíquete Kerberos. O token do Kerberos aparece na camada SOAP como um token de suporte endossador; ou seja, um token que assina a assinatura da mensagem. O serviço é autenticado por meio de um certificado X.509 na camada de transporte. O elemento de associação de segurança é um TransportSecurityBindingElement
retornado pelo método CreateKerberosOverTransportBindingElement. Como alternativa, defina o atributo authenticationMode
como KerberosOverTransport
.
Observação
Para usar esse modo de autenticação, a conta de serviço deve ser associada a um SPN. Para fazer isso, execute o serviço na conta NETWORK SERVICE ou na conta do 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 construtor EndpointAddress. Para saber mais, confira Identidade de serviço e autenticação.
MutualCertificate
Com esse modo de autenticação, o cliente se autentica por meio de um certificado X.509 que é exibido 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 por meio de um certificado X.509. O elemento de associação de segurança é um SymmetricSecurityBindingElement
retornado pelo método CreateMutualCertificateBindingElement. Como alternativa, defina o atributo authenticationMode
como MutualCertificate
.
MutualCertificateDuplex
Com esse modo de autenticação, o cliente se autentica por meio de um certificado X.509 que é exibido 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 por meio de um certificado X.509. A associação é um AsymmetricSecurityBindingElement
retornado pelo método CreateMutualCertificateDuplexBindingElement. Como alternativa, defina o atributo authenticationMode
como MutualCertificateDuplex
.
MutualSslNegotiated
Com esse modo de autenticação, o cliente e o serviço se autenticam por meio de certificados X.509. O elemento de associação de segurança é um SymmetricSecurityBindingElement
retornado pelo método CreateSslNegotiationBindingElement quando um valor de true
é passado para o primeiro parâmetro. Como alternativa, defina o atributo authenticationMode
como MutualSslNegotiated
.
SecureConversation
O elemento de associação de segurança é um SymmetricSecurityBindingElement
retornado pelo método CreateSecureConversationBindingElement. Esse método usa um parâmetro SecurityBindingElement, que é usado durante a inicialização para estabelecer a sessão segura. Como alternativa, defina o atributo authenticationMode
como SecureConversation
.
Se nenhuma associação de inicialização for especificada, o modo de autenticação SspiNegotiated
será usado para inicialização.
SspiNegotiation
Com esse modo de autenticação, um protocolo de negociação é usado para executar a autenticação de cliente e servidor. O Kerberos é usado se possível. Caso contrário, o NT LanMan (NTLM) é usado. O elemento de associação de segurança é um SymmetricSecurityBindingElement
retornado pelo método CreateSspiNegotiationBindingElement. Como alternativa, defina o atributo authenticationMode
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 é usado. O token resultante aparece na camada SOAP como um token de suporte endossador; ou seja, um token que assina a assinatura da mensagem. Além disso, o serviço é autenticado na camada de transporte por um certificado X.509. O elemento de associação de segurança é um TransportSecurityBindingElement
retornado pelo método CreateSspiNegotiationOverTransportBindingElement. Como alternativa, defina o atributo authenticationMode
como SspiNegotiatedOverTransport
.
UserNameForCertificate
Com esse modo de autenticação, o cliente é autenticado 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 assinado pela assinatura da mensagem. O serviço é autenticado no cliente por meio de um certificado X.509. O elemento de associação de segurança é um SymmetricSecurityBindingElement
retornado pelo método CreateUserNameForCertificateBindingElement. Como alternativa, defina o atributo authenticationMode
como UserNameForCertificate
.
Para o modo de autenticação UserNameForCertificate
, o cliente e o serviço devem estar usando 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 assinado pela assinatura da mensagem. O serviço é autenticado por meio de um certificado X.509. O elemento de associação de segurança é um SymmetricSecurityBindingElement
retornado pelo método CreateUserNameForSslBindingElement. Como alternativa, defina o atributo authenticationMode
como UserNameForSslNegotiated
.
UserNameOverTransport
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 assinado pela assinatura da mensagem. O serviço é autenticado por meio de um certificado X.509 na camada de transporte. O elemento de associação de segurança é um TransportSecurityBindingElement
retornado pelo método CreateUserNameOverTransportBindingElement. Como alternativa, defina o atributo authenticationMode
como UserNameOverTransport
.