seguridad generate generar crear basada autenticación autenticacion wcf web-services soap weblogic wcf-security

generate - Cómo firmar token X509 usando WCF



token de autenticación (1)

Estoy trabajando en un cliente de WCF que debe hablar con un servicio de Oracle WebLogic. El servicio impone la autenticación de certificado mutuo.

Sin embargo, no podemos satisfacer la política y el servidor registra un error que indica:

"WSM-00081: El certificado X.509 no está firmado."

Me he estado preguntando cuál es el significado exacto de esto. La documentación de Oracle dice:

WSM-00081: El certificado X.509 no está firmado.

Causa: el token X509 utilizado no se firmó según los requisitos del escenario de autenticación del certificado.

Acción: Firme el token X509 (según el mecanismo de referencia utilizado) para la autenticación del certificado.

Nivel 1

Error de tecleado

Impacto: seguridad

( http://docs.oracle.com/cd/E25054_01/core.1111/e10113/chapter_wsm_messages.htm )

Después de algunas investigaciones, descubrimos que podemos deshabilitar la verificación en el archivo de configuración de la política de servicio estableciendo is-signed="false :

<orasp:x509-token orasp:enc-key-ref-mech="direct" orasp:is-encrypted="false" orasp:is-signed="false" orasp:rcpt-enc-key-ref-mech="direct" orasp:rcpt-sign-key-ref-mech="direct" orasp:sign-key-ref-mech="direct"/>

Mis dos teorías:

  • El certificado debe estar firmado por una CA
    • Verificamos usando un certificado firmado por una CA, pero esto no importó
    • Sin embargo, podríamos haber cometido algunos errores al configurar esto. ¿Deberíamos intentarlo?
  • De alguna manera tenemos que firmar los BinarySecurityToken''s incluidos, que están incluidos en la solicitud.
    • Sin embargo, no tengo idea de cómo puedo hacer esto

¿He entendido mal el tema o alguno de ustedes puede dar algunos consejos sobre cuál podría ser el problema y cómo se puede resolver?


Debe firmar el token de seguridad como parte de la solicitud.

En el elemento de enlace de su configuración, establezca el modo de elemento de seguridad en SecurityMode.Message y el elemento de mensaje clientCredentialType en MessageCredentialType.Certificate :

<security mode="Message"> <message clientCredentialType="Certificate" algorithmSuite="Default" establishSecurityContext="true" /> </security>

A continuación, cree un comportamiento de punto final para resolver la ubicación de su certificado de cliente :

<behavior name="endpointCredentialBehavior"> <clientCredentials> <clientCertificate findValue="Contoso.com" storeLocation="LocalMachine" storeName="TrustedPeople" x509FindType="FindBySubjectName" /> </clientCredentials> </behavior>