...
Logs serveur CAS
| Bloc de code |
|---|
194.214.218.163 "GET /index.jsp?service=[http://ent.univ.fr/Login] HTTP/1.1" |
L'application web cliente récupère le Service Ticket (ST).
Logs appli web cliente :
| Bloc de code |
|---|
194.214.218.163 "GET /Login?ticket=ST-37-sIMC5FhJx15GRwZtJ1Q7 HTTP/1.1" |
Validation du ticket
L'appli web cliente génère une requête http ou https pour faire valider le ticket, vers l'URI LegacyValidate (protocole CAS V1) ou ServiceValidate (protocole CAS V2). Le login sera retourné par le serveur CAS et réponse de cette requête.
Logs serveur CAS
| Bloc de code |
|---|
194.214.218.39 GET /serviceValidate?service=[http://ent.univ.fr/Login&ticket=ST-37-sIMC5FhJx15GRwZtJ1Q7] HTTP/1.1 |
S'assurer que le ticket est bien le bon, et que le service passé en paramètre correspond au service passé lors de la demande du ticket.
...
| Bloc de code |
|---|
194.214.218.163 "GET /cas/index.php?ticket=ST-1681-9IpDqJ2ang4SBf8aanzT HTTP/1.1" |
Serveur CAS, validation du ST et demande du PGT (Proxy Granting Ticket)du ST et demande du PGT (Proxy Granting Ticket)
| Bloc de code |
|---|
|
| Bloc de code |
194.214.218.198 "GET /serviceValidate?service=\\ h3. URL de callback Avant de délivrer la réponse du GET précédent, le serveur CAS tente un connexion directe en https vers l'URL de callback de l'application web proxy, en passant 2 paramètres : PGTIOU et PGT *Appli web proxy*\\194.214.218.40"198 rel="nofollow"linktype="raw" linktext=""GET /serviceValidate?service=https://webmail.univ.fr/cas/index.php&ticket=ST-1681-9Ip...&pgtUrl=https://webmail.univ-nancy2.fr/cas/casProxy.php |
...
A l'aide de wget, on va s'assurer que les connexions https directes sont autorisées (adapter les ports TCP en fonction de votre configuration.
Coté ent
| Bloc de code |
|---|
wget \-O /tmp/cas.log "https://auth.univ.fr:443/proxyValidate?ticket=PT-1-xxx&service=[https://foo.fr]"
|
...
| Bloc de code |
|---|
openssl s_client \-host auth.univ.fr \-port 443 |
Devrait sortir qq chose comme cela :
| Bloc de code |
|---|
CONNECTED(00000003) depth=2 /C=FR/O=CRU/CN=ac-racine/emailAddress=ca-admin@cru.fr verify error:num=19:self signed certificate in certificate chain verify return:0 --- Certificate chain 0 s:/C=FR/O=0541508W/CN=auth.univ-nancy2.fr/emailAddress=reseau@univ-nancy2.fr i:/C=FR/O=CRU/CN=ac-serveur/emailAddress=ca-admin@cru.fr 1 s:/C=FR/O=CRU/CN=ac-serveur/emailAddress=ca-admin@cru.fr i:/C=FR/O=CRU/CN=ac-racine/emailAddress=ca-admin@cru.fr 2 s:/C=FR/O=CRU/CN=ac-racine/emailAddress=ca-admin@cru.fr i:/C=FR/O=CRU/CN=ac-racine/emailAddress=ca-admin@cru.fr --- Server certificate \---\--BEGIN CERTIFICATE-\---\- MIIEWzCCA0OgAwIBAgICAjgwDQYJKoZIhvcNAQEEBQAwUDELMAkGA1UEBhMCRlIx .... \---\--END CERTIFICATE-\---\- subject=/C=FR/O=0541508W/CN=auth.univ-nancy2.fr/emailAddress=reseau@univ-nancy2.fr issuer=/C=FR/O=CRU/CN=ac-serveur/emailAddress=ca-admin@cru.fr --- No client certificate CA names sent --- SSL handshake has read 3662 bytes and written 340 bytes --- New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA Server public key is 1024 bit SSL-Session: .... Verify return code: 19 (self signed certificate in certificate chain) \--\- |
Il Faut s'assurer que la chaine de certification est bien transmise.
...
| Bloc de code |
|---|
export JAVA_HOME=/usr/java/jdk1.5 HOST=auth.univ-nancy2.fr PORT=443 #HTTP_VER=HTTP/1.1 #ENCODING=ISO-8859-1 # #### ATTENTION ##### # Le parametre host est obligatoire. # le defaut est 443 pour le port, "HTTP/1.0" pour le protocole, "ISO-8859-1" pour l'encoding # l'ordre des parametres est important. Par exemple, si on veut specifier HTTP_VER (HTTP/1.0, par exemple), # il faut decommenter les parametres PORT et HTTP_VER # #$JAVA_HOME/bin/java testHTTPS $HOST $PORT $HTTP_VER $ENCODING $JAVA_HOME/bin/java \-Djavax.net.ssl.trustStore=/Cert/ac-racine-cru.keystore testHTTPS $HOST $PORT $HTTP_VER $ENCODING #$JAVA_HOME/bin/java \-Djavax.net.ssl.trustStore=/Cert/esup-portail.keystore testHTTPS $HOST $PORT $HTTP_VER $ENCODING |
...