Modos de autenticación de SecurityBindingElement
Windows Communication Foundation (WCF) proporciona varios modos por medio de los cuales los clientes y servicios se autentican entre sí. Puede crear elementos de enlace de seguridad para estos modos de autenticación utilizando los métodos estáticos en la clase SecurityBindingElement o a través de la configuración. Este tema describe brevemente los 18 modos de autenticación.
Para un ejemplo del uso del elemento para uno de los modos de autenticación, vea Procedimiento: creación de SecurityBindingElement para un modo de autenticación especificado.
Programación de configuración básica
El procedimiento siguiente describe cómo establecer el modo de autenticación en un archivo de configuración.
Para establecer el modo de autenticación en la configuración
En el elemento <bindings>, agregue un objeto <customBinding>.
Como elemento secundario, agregue un elemento <binding> al elemento
<customBinding>
.Agregue un elemento
<security>
al elemento<binding>
.Establezca el atributo
authenticationMode
en uno de los valores descritos a continuación. Por ejemplo, el código siguiente define el modo enAnonymousForCertificate
.<bindings> <customBinding> <binding name="SecureCustomBinding"> <security authenticationMode ="AnonymousForCertificate" /> </binding> </customBinding> </bindings>
Para definir el modo mediante programación
Determine el tipo de devolución, que puede ser uno de los siguientes: SymmetricSecurityBindingElement, TransportSecurityBindingElement, AsymmetricSecurityBindingElement o SecurityBindingElement.
Llame al método estático apropiado de la clase SecurityBindingElement. Por ejemplo, el código siguiente llama al método CreateAnonymousForCertificateBindingElement.
SymmetricSecurityBindingElement b = SecurityBindingElement. CreateAnonymousForCertificateBindingElement();
Dim b As SymmetricSecurityBindingElement = _ SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
Utilice el elemento de enlace para crear el enlace personalizado. Para más información, consulte Enlaces personalizados.
Descripciones de modo
AnonymousForCertificate
Con este modo de autenticación, el cliente es anónimo y el servicio se autentica utilizando un certificado X.509. El elemento de enlace de seguridad es un SymmetricSecurityBindingElement devuelto por el método CreateAnonymousForCertificateBindingElement. Por otra parte, establezca el atributo authenticationMode
del elemento <security>
en AnonymousForCertificate
.
AnonymousForSslNegotiated
Con este modo de autenticación, el cliente es anónimo y el servicio se autentica utilizando un certificado X.509 que se negocia en el tiempo de ejecución. El elemento de enlace de seguridad es un SymmetricSecurityBindingElement devuelto por el método CreateSslNegotiationBindingElement cuando se pasa un valor false
para el primer parámetro. Por otra parte, defina el atributo authenticationMode
en AnonymousForSslNegotiated
.
CertificateOverTransport
Con este modo de autenticación, el cliente autentica mediante un certificado X.509 que aparece en el nivel de SOAP como un token auxiliar de aprobación; es decir, un token que firma la firma del mensaje. La autenticación del servicio se realiza mediante un certificado X.509 en el nivel de transporte. El elemento de enlace de seguridad es un TransportSecurityBindingElement devuelto por el método CreateCertificateOverTransportBindingElement. Por otra parte, defina el atributo authenticationMode
en CertificateOverTransport
.
IssuedToken
Con este modo de autenticación, el cliente no se autentica al servicio como tal, sino que se autentica a un servicio de token de seguridad y recibe un token de SAML, que presentará a continuación al servidor para demostrar que conoce una clave compartida. El servicio no se autentica en el cliente como tal, sino que el servicio de token de seguridad cifra la clave compartida como parte del token emitido de manera que sólo el servicio puede descifrar la clave. El elemento de enlace de seguridad es un SymmetricSecurityBindingElement devuelto por el método CreateIssuedTokenBindingElement. Por otra parte, defina el atributo authenticationMode
en IssuedToken
.
IssuedTokenForCertificate
Con este modo de autenticación, el cliente no se autentica al servicio como tal, sino que se autentica a un servicio de token de seguridad y recibe un token de SAML, que presentará a continuación al servidor para demostrar que conoce una clave compartida. El token emitido aparece en el nivel de SOAP como un token auxiliar de aprobación o un token portador; es decir, un token que firma la firma del mensaje. El servicio autentica al cliente utilizando un certificado X.509. El elemento de enlace de seguridad es un SymmetricSecurityBindingElement devuelto por el método CreateIssuedTokenForCertificateBindingElement. Por otra parte, defina el atributo authenticationMode
en IssuedTokenForCertificate
.
IssuedTokenForSslNegotiated
Con este modo de autenticación, el cliente no se autentica al servicio como tal, sino que se autentica a un servicio de token de seguridad y recibe un token de SAML, que presentará a continuación al servidor para demostrar que conoce una clave compartida. El token emitido aparece en el nivel de SOAP como un token auxiliar de aprobación o un token portador; es decir, un token que firma la firma del mensaje. La autenticación del servicio se realiza mediante un certificado X.509. El elemento de enlace de seguridad es un SymmetricSecurityBindingElement devuelto por el método CreateIssuedTokenForSslBindingElement. Por otra parte, defina el atributo authenticationMode
en IssuedTokenForSslNegotiated
.
IssuedTokenOverTransport
Con este modo de autenticación, el cliente no se autentica al servicio como tal, sino que se autentica a un servicio de token de seguridad y recibe un token de SAML, que presentará a continuación al servidor para demostrar que conoce una clave compartida. El token emitido aparece en el nivel de SOAP como un token auxiliar de aprobación o un token portador; es decir, un token que firma la firma del mensaje. La autenticación del servicio se realiza mediante un certificado X.509 en el nivel de transporte. El elemento de enlace de seguridad es un TransportSecurityBindingElement
devuelto por el método CreateIssuedTokenOverTransportBindingElement. Por otra parte, defina el atributo authenticationMode
en IssuedTokenOverTransport
.
Kerberos
Con este modo de autenticación, el cliente se autentica en el servicio utilizando un vale de Kerberos. Ese mismo vale también proporciona autenticación del servidor. El elemento de enlace de seguridad es un SymmetricSecurityBindingElement
devuelto por el método CreateKerberosBindingElement. Por otra parte, defina el atributo authenticationMode
en Kerberos
.
Nota
Para utilizar este modo de autenticación, la cuenta de servicio debe estar asociada a un nombre de entidad de seguridad de servicio (SPN). Para ello, ejecute el servicio bajo la cuenta de SERVICIO DE RED o la cuenta de SISTEMA LOCAL. Por otra parte, utilice la herramienta SetSpn.exe para crear un SPN para la cuenta de servicio. En cualquier caso, el cliente debe utilizar el SPN correcto en el elemento <servicePrincipalName> o utilizar el constructor EndpointAddress. Para más información, consulte Identidad y autenticación del servicio.
Nota
Cuando se utiliza el modo de autenticación de Kerberos
, no se admitirán los niveles de suplantación Anonymous y Delegation.
KerberosOverTransport
Con este modo de autenticación, el cliente se autentica en el servicio utilizando un vale de Kerberos. El token de Kerberos aparece en el nivel de SOAP como un toque compatible con la aprobación; es decir, un token que firma la firma del mensaje. La autenticación del servicio se realiza mediante un certificado X.509 en el nivel de transporte. El elemento de enlace de seguridad es un TransportSecurityBindingElement
devuelto por el método CreateKerberosOverTransportBindingElement. Por otra parte, defina el atributo authenticationMode
en KerberosOverTransport
.
Nota
Para utilizar este modo de autenticación, la cuenta de servicio debe estar asociada con un SPN. Para ello, ejecute el servicio bajo la cuenta de SERVICIO DE RED o la cuenta de SISTEMA LOCAL. Por otra parte, utilice la herramienta SetSpn.exe para crear un SPN para la cuenta de servicio. En cualquier caso, el cliente debe utilizar el SPN correcto en el elemento <servicePrincipalName> o utilizar el constructor EndpointAddress. Para más información, consulte Identidad y autenticación del servicio.
MutualCertificate
Con este modo de autenticación, el cliente autentica mediante un certificado X.509 que aparece en el nivel de SOAP como un token auxiliar de aprobación; es decir, un token que firma la firma del mensaje. La autenticación del servicio también se realiza mediante un certificado X.509. El elemento de enlace de seguridad es un SymmetricSecurityBindingElement
devuelto por el método CreateMutualCertificateBindingElement. Por otra parte, defina el atributo authenticationMode
en MutualCertificate
.
MutualCertificateDuplex
Con este modo de autenticación, el cliente autentica mediante un certificado X.509 que aparece en el nivel de SOAP como un token auxiliar de aprobación; es decir, un token que firma la firma del mensaje. La autenticación del servicio también se realiza mediante un certificado X.509. Es enlace es un AsymmetricSecurityBindingElement
devuelto por el método CreateMutualCertificateDuplexBindingElement. Por otra parte, defina el atributo authenticationMode
en MutualCertificateDuplex
.
MutualSslNegotiated
Con este modo de autenticación, el cliente y el servicio autentican utilizando los certificados X.509. El elemento de enlace de seguridad es un SymmetricSecurityBindingElement
devuelto por el método CreateSslNegotiationBindingElement cuando se pasa un valor true
para el primer parámetro. Por otra parte, defina el atributo authenticationMode
en MutualSslNegotiated
.
SecureConversation
El elemento de enlace de seguridad es un SymmetricSecurityBindingElement
devuelto por el método CreateSecureConversationBindingElement. Este método toma SecurityBindingElement como parámetro, que se utiliza durante la inicialización para establecer la sesión segura. Por otra parte, defina el atributo authenticationMode
en SecureConversation
.
Si no se especifica ningún enlace de arranque, se utilizará el modo de autenticación SspiNegotiated
para el arranque.
SspiNegotiation
Con este modo de autenticación, se usa un protocolo de negociación para realizar la autenticación del cliente y del servidor. Se utiliza Kerberos si es posible; de lo contrario, se utiliza NT LanMan (NTLM). El elemento de enlace de seguridad es un SymmetricSecurityBindingElement
devuelto por el método CreateSspiNegotiationBindingElement. Por otra parte, defina el atributo authenticationMode
en SspiNegotiated
.
SspiNegotiatedOverTransport
Con este modo de autenticación, se usa un protocolo de negociación para realizar la autenticación del cliente y del servidor. Se utiliza el protocolo Kerberos si es posible; de lo contrario, se utiliza NTLM. El token resultante aparece en el nivel de SOAP como un toque auxiliar de aprobación; es decir, un token que firma la firma del mensaje. El servicio se autentica además en el nivel de transporte por un certificado X.509. El elemento de enlace de seguridad es un TransportSecurityBindingElement
devuelto por el método CreateSspiNegotiationOverTransportBindingElement. Por otra parte, defina el atributo authenticationMode
en SspiNegotiatedOverTransport
.
UserNameForCertificate
Con este modo de autenticación, el cliente se autentica en el servicio utilizando un token de nombre de usuario que aparece en el nivel de SOAP como un token auxiliar firmado; es decir, un token firmado por la firma del mensaje. El servicio autentica al cliente utilizando un certificado X.509. El elemento de enlace de seguridad es un SymmetricSecurityBindingElement
devuelto por el método CreateUserNameForCertificateBindingElement. Por otra parte, defina el atributo authenticationMode
en UserNameForCertificate
.
En el caso del modo de autenticación UserNameForCertificate
, el cliente y el servicio deben estar utilizando WS-Security 1.1.
UserNameForSslNegotiated
Con este modo de autenticación, el cliente se autentica mediante un token de nombre de usuario que aparece en el nivel de SOAP como un token auxiliar firmado; es decir, un token firmado por la firma del mensaje. La autenticación del servicio se realiza mediante un certificado X.509. El elemento de enlace de seguridad es un SymmetricSecurityBindingElement
devuelto por el método CreateUserNameForSslBindingElement. Por otra parte, defina el atributo authenticationMode
en UserNameForSslNegotiated
.
UserNameOverTransport
Con este modo de autenticación, el cliente se autentica mediante un token de nombre de usuario que aparece en el nivel de SOAP como un token auxiliar firmado; es decir, un token firmado por la firma del mensaje. La autenticación del servicio se realiza mediante un certificado X.509 en el nivel de transporte. El elemento de enlace de seguridad es un TransportSecurityBindingElement
devuelto por el método CreateUserNameOverTransportBindingElement. Por otra parte, defina el atributo authenticationMode
en UserNameOverTransport
.