2012-10-08 16 views
7

Sto lavorando su un client WCF che deve parlare con un servizio Oracle WebLogic. Il servizio applica l'autenticazione reciproca dei certificati.Come firmare un token X509 usando WCF

Non siamo, tuttavia, in grado di soddisfare la politica e il server registra un errore affermando:

"WSM-00081: Il certificato X.509 non è firmato."

Mi sono chiesto quale sia il significato esatto di questo. La documentazione Oracle indica:

WSM-00081: il certificato X.509 non è firmato.

Causa: il token X509 utilizzato non è stato firmato in base ai requisiti dello scenario di autenticazione del certificato.

Azione: firmare il token X509 (in base al meccanismo di riferimento utilizzato) per l'autenticazione del certificato.

Livello: 1

Tipo: errore

Impatto: Sicurezza

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

Dopo alcune ricerche, abbiamo scoperto che siamo in grado di disabilitare il check-in al servizio file di configurazione dei criteri impostando 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"/> 

miei due teorie:

  • Il certificato deve essere firmato da una CA
    • Abbiamo controllato utilizzando un un certificato firmato da una CA, ma questo fatto alcuna differenza
    • Tuttavia, abbiamo potrebbe aver commesso errori durante la configurazione di questo. Dovremmo provarci?
  • In qualche modo è necessario firmare i BinarySecurityToken inclusi, che sono inclusi nella richiesta.
    • Tuttavia, non ho idea di come posso fare questo

Ho io completamente frainteso il soggetto o posso qualcuno di voi dare alcune indicazioni per ciò che il problema potrebbe essere e come può essere risolto?

+0

Si sta utilizzando un certificato autofirmato come certificato da un fornitore di fiducia? – Rajesh

+0

@Rajesh: Ho provato entrambi. – nilu

+1

È un'autenticazione a 2 vie? Hai anche controllato se il provider esiste come autorità affidabile nel servizio weblogic di Oracle? Assicurarsi che se è un'autenticazione a 2 vie, entrambi i certificati sono firmati da un'autorità attendibile – Rajesh

risposta

0

È necessario firmare il token di sicurezza come parte della richiesta.

Nel elemento vincolante della vostra configurazione impostare la modalità elemento di sicurezza per SecurityMode.Message e l'elemento messaggio clientCredentialType a MessageCredentialType.Certificate:

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

Successivamente, creare un comportamento endpoint per risolvere la posizione del client certificate:

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