Michael Ströder a écrit :
Julien Garnier wrote:
Wath I want to do :
- automatic login if someone comes with a certificate of My own compagnie and his mail is in my ldap server. I've troubles to set up this authentication, cause I've some certificates errors that I can't solve.

Can you elaborate on the problems you have?
When I set access to cas with auth=true, I've got a 500 error :

*exception*

javax.servlet.ServletException: Unable to validate ProxyTicketValidator 
[[edu.yale.its.tp.cas.client.ProxyTicketValidator proxyList=[null] 
[edu.yale.its.tp.cas.client.ServiceTicketValidator 
casValidateUrl=[https://sso.dr13.cnrs.fr/cas/serviceValidate] 
ticket=[ST-35-3T0ZQ2S1cFqWCPYkSagH-cas] 
service=[https%3A%2F%2Fsso.dr13.cnrs.fr%2Fservlets-examples%2Fservlet%2FHelloWorldExample]
 renew=false]]]
        edu.yale.its.tp.cas.client.filter.CASFilter.doFilter(CASFilter.java:381)
        filters.ExampleFilter.doFilter(ExampleFilter.java:102)

*cause mère*


edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate 
ProxyTicketValidator [[edu.yale.its.tp.cas.client.ProxyTicketValidator 
proxyList=[null] [edu.yale.its.tp.cas.client.ServiceTicketValidator 
casValidateUrl=[https://sso.dr13.cnrs.fr/cas/serviceValidate] 
ticket=[ST-35-3T0ZQ2S1cFqWCPYkSagH-cas] 
service=[https%3A%2F%2Fsso.dr13.cnrs.fr%2Fservlets-examples%2Fservlet%2FHelloWorldExample]
 renew=false]]]
        edu.yale.its.tp.cas.client.CASReceipt.getReceipt(CASReceipt.java:52)
        
edu.yale.its.tp.cas.client.filter.CASFilter.getAuthenticatedUser(CASFilter.java:455)
        edu.yale.its.tp.cas.client.filter.CASFilter.doFilter(CASFilter.java:378)
        filters.ExampleFilter.doFilter(ExampleFilter.java:102)

*cause mère*

javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
        com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:150)
        com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:117)
        
com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1650)
        
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:925)
        
com.sun.net.ssl.internal.ssl.SSLSocketImpl.waitForClose(SSLSocketImpl.java:1428)
        
com.sun.net.ssl.internal.ssl.HandshakeOutStream.flush(HandshakeOutStream.java:103)
        
com.sun.net.ssl.internal.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:591)
        
com.sun.net.ssl.internal.ssl.ClientHandshaker.sendChangeCipherAndFinish(ClientHandshaker.java:698)
        
com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:624)
        
com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:160)
        com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:495)
        
com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:433)
        
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:877)
        
com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1089)
        
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1116)
        
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1100)
        
sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:402)
        
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:170)
        
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:934)
        
sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
        edu.yale.its.tp.cas.util.SecureURL.retrieve(SecureURL.java:84)
        
edu.yale.its.tp.cas.client.ServiceTicketValidator.validate(ServiceTicketValidator.java:212)
        edu.yale.its.tp.cas.client.CASReceipt.getReceipt(CASReceipt.java:50)
        
edu.yale.its.tp.cas.client.filter.CASFilter.getAuthenticatedUser(CASFilter.java:455)
        edu.yale.its.tp.cas.client.filter.CASFilter.doFilter(CASFilter.java:378)
        filters.ExampleFilter.doFilter(ExampleFilter.java:102)


If auth=want, works perfectly ...
I've read many tutorials but any of them are realy clear for me on how to set up with my own certificate authority.

First you have to import your CA cert as trusted in the Java key store. Whether it works also depends on whether your CA was correctly set up (e.g. regarding certificate profile: naming, X.509v3 extensions). YOu have to be familiar with SSL/TLS client authentication.
I was thinking I do that ...

My server.xml :
<Connector address="sso.dr13.cnrs.fr" port="443" maxHttpHeaderSize="8192"
              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
              enableLookups="false" disableUploadTimeout="true"
              acceptCount="100" scheme="https" secure="true"
              clientAuth="true" sslProtocol="TLS"
              keystoreFile="/etc/tomcat/sso.dr13.cnrs.fr.jks"
              keystorePass="password"
              truststoreFile="/etc/tomcat/truststore.jks"
              truststorePass="password"
       />

If I read the truststore and key store:
(sso.dr13.cnrs.fr is the cas server)

keytool -list -v -keystore /etc/tomcat/sso.dr13.cnrs.fr .jks
Tapez le mot de passe du Keystore :  password

Type Keystore : jks
Fournisseur Keystore : SUN

Votre Keystore contient 1 entrée(s)

Nom d'alias : sso.dr13.cnrs.fr
Date de création : 16 avr. 2008
Type d'entrée : keyEntry
Longueur de chaîne du certificat : 3
Certificat[1]:
Propriétaire : [EMAIL PROTECTED], CN=sso.dr13.cnrs.fr, OU=MOY1300, O=CNRS, C=FR
Ãmetteur : CN=CNRS-Standard, O=CNRS, C=FR
Numéro de série : 5cbe
Valide du : Tue Jul 10 12:18:29 UTC 2007 au : Thu Jul 09 12:18:29 UTC 2009
Empreintes de certificat :
        MD5 :  67:1A:BE:9C:BF:BE:A1:33:3F:F6:F6:C4:24:32:19:A9
        SHA1: 57:F8:BA:7E:9D:37:3B:77:DC:12:77:AF:1D:00:CE:67:C9:E8:EF:6F
Certificat[2]:
Propriétaire : CN=CNRS-Standard, O=CNRS, C=FR
Ãmetteur : CN=CNRS, O=CNRS, C=FR
Numéro de série : 2
Valide du : Fri Apr 27 05:46:49 UTC 2001 au : Mon Apr 25 05:46:49 UTC 2011
Empreintes de certificat :
        MD5 :  CE:89:05:3D:B7:3D:8F:6E:5B:DF:58:16:3B:E0:88:CF
        SHA1: 41:F6:1C:59:C7:01:A9:10:F4:6E:7E:FA:9B:FD:15:BD:FB:B4:44:D5
Certificat[3]:
Propriétaire : CN=CNRS, O=CNRS, C=FR
Ãmetteur : CN=CNRS, O=CNRS, C=FR
Numéro de série : 0
Valide du : Fri Apr 27 05:44:36 UTC 2001 au : Thu Apr 22 05:44:36 UTC 2021
Empreintes de certificat :
        MD5 :  92:1E:3C:80:4A:95:65:6C:9E:A2:F2:1E:12:BF:EF:6D
        SHA1: 22:61:81:6A:9D:F6:86:6E:76:CE:8A:AC:6E:6F:52:3D:8B:09:32:D1


*******************************************
*******************************************

keytool -list -v -keystore /etc/tomcat/keytool -list -v -keystore /etc/tomcat/truststore.jks
Tapez le mot de passe du Keystore :  password

Type Keystore : jks
Fournisseur Keystore : SUN

Votre Keystore contient 4 entrée(s)

Nom d'alias : cnrs-standard
Date de création : 29 avr. 2008
Type d'entrée : trustedCertEntry

Propriétaire : CN=CNRS-Standard, O=CNRS, C=FR
Ãmetteur : CN=CNRS, O=CNRS, C=FR
Numéro de série : 2
Valide du : Fri Apr 27 05:46:49 UTC 2001 au : Mon Apr 25 05:46:49 UTC 2011
Empreintes de certificat :
        MD5 :  CE:89:05:3D:B7:3D:8F:6E:5B:DF:58:16:3B:E0:88:CF
        SHA1: 41:F6:1C:59:C7:01:A9:10:F4:6E:7E:FA:9B:FD:15:BD:FB:B4:44:D5


*******************************************
*******************************************
Nom d'alias : cnrs
Date de création : 29 avr. 2008
Type d'entrée : trustedCertEntry

Propriétaire : CN=CNRS, O=CNRS, C=FR
Ãmetteur : CN=CNRS, O=CNRS, C=FR
Numéro de série : 0
Valide du : Fri Apr 27 05:44:36 UTC 2001 au : Thu Apr 22 05:44:36 UTC 2021
Empreintes de certificat :
        MD5 :  92:1E:3C:80:4A:95:65:6C:9E:A2:F2:1E:12:BF:EF:6D
        SHA1: 22:61:81:6A:9D:F6:86:6E:76:CE:8A:AC:6E:6F:52:3D:8B:09:32:D1


*******************************************
*******************************************
Nom d'alias : cnrs-plus
Date de création : 30 avr. 2008
Type d'entrée : trustedCertEntry

Propriétaire : CN=CNRS-Plus, O=CNRS, C=FR
Ãmetteur : CN=CNRS, O=CNRS, C=FR
Numéro de série : 1
Valide du : Fri Apr 27 05:45:28 UTC 2001 au : Mon Apr 25 05:45:28 UTC 2011
Empreintes de certificat :
        MD5 :  CB:12:3C:95:D1:3B:E4:C6:E0:23:AC:E8:F9:C2:79:88
        SHA1: 60:FC:FB:84:D4:DD:58:5D:4E:42:B9:01:44:E8:2E:B2:C4:76:53:B8


*******************************************
*******************************************
Nom d'alias : sso
Date de création : 30 avr. 2008
Type d'entrée : trustedCertEntry

Propriétaire : [EMAIL PROTECTED], CN=sso.dr13.cnrs.fr, OU=MOY1300, O=CNRS, C=FR
Ãmetteur : CN=CNRS-Standard, O=CNRS, C=FR
Numéro de série : 5cbe
Valide du : Tue Jul 10 12:18:29 UTC 2007 au : Thu Jul 09 12:18:29 UTC 2009
Empreintes de certificat :
        MD5 :  67:1A:BE:9C:BF:BE:A1:33:3F:F6:F6:C4:24:32:19:A9
        SHA1: 57:F8:BA:7E:9D:37:3B:77:DC:12:77:AF:1D:00:CE:67:C9:E8:EF:6F



I think the problem is that I've two certificate authority : CNRS and CNRS-Standard
- If no certificate, login against the ldap server.

That's possible. You have to tweak login-webflow.xml to achieve this.
I've read this, thanks
But after login, how can I know what can acces this user ? For example user1 has acces to webmail and wiki but user 2 has only acces to webmail ...

You should probably use the Services Manager to implement such application-level access control:

http://www.ja-sig.org/wiki/display/CASUM/Services+Management

Ciao, Michael.

Thanks, I'll take a look ...

Juju

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
Yale CAS mailing list
[email protected]
http://tp.its.yale.edu/mailman/listinfo/cas

Reply via email to