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

  1. En el elemento <bindings>, agregue un objeto <customBinding>.

  2. Como elemento secundario, agregue un elemento <binding> al elemento <customBinding>.

  3. Agregue un elemento <security> al elemento <binding>.

  4. Establezca el atributo authenticationMode en uno de los valores descritos a continuación. Por ejemplo, el código siguiente define el modo en AnonymousForCertificate.

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

Para definir el modo mediante programación

  1. Determine el tipo de devolución, que puede ser uno de los siguientes: SymmetricSecurityBindingElement, TransportSecurityBindingElement, AsymmetricSecurityBindingElement o SecurityBindingElement.

  2. 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()
    
  3. 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.

Consulte también