CAS, OpenID, SAML : concepts, différences et exemples

2,991 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,991
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
66
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

CAS, OpenID, SAML : concepts, différences et exemples

  1. 1. JDLL 2011CAS, OpenID, SAML : concepts, différences et exemples Clément OUDOT 18 novembre 2011
  2. 2. Sommaire● WebSSO, contrôle daccès et fédération didentité● Les protocoles ● CAS ● OpenID ● SAML● Que choisir ? 17/11/112 http://lemonldap-ng.org
  3. 3. Présentations 17/11/113 http://lemonldap-ng.org
  4. 4. Clément OUDOT● Contributeur LemonLDAP::NG depuis 2007, Leader depuis 2011, en relais de Xavier GUIMARD● Leader du projet LDAP Tool Box● Actif dans les communautés OpenLDAP et LDAP Synchronization Connector● Membre de la cellule Identité / Sécurité du Groupe LINAGORA depuis 2003 17/11/114 http://lemonldap-ng.org
  5. 5. Quelques mots sur LemonLDAP::NG● Logiciel libre de WebSSO, contrôle daccès et fédération didentité● Compatibilité CAS, OpenID et SAML 2.0● Écrit en Perl, exécuté dans mod_perl dApache● Version 1.1.0 sortie le 8 juillet 2011● Version 1.2.0 en prévision décembre 2011 17/11/115 http://lemonldap-ng.org
  6. 6. WebSSO, contrôle daccès et fédération didentité 17/11/116 http://lemonldap-ng.org
  7. 7. WebSSO● SSO signifie « Single Sign On », qui peut se traduire en français par « authentification unique »● Le WebSSO se consacre à lauthentification unique pour les applications Web, cest-à-dire des applications client-serveur dont le client est un navigateur Web (IE, Firefox, etc.)● Le principe de base est dintercepter les requêtes entre le client et le serveur, et indiquer au serveur que le client est bien authentifié 17/11/117 http://lemonldap-ng.org
  8. 8. Intérêt du WebSSO : éviter la multiplication des identités 17/11/118 http://lemonldap-ng.org
  9. 9. Cinématique simple 1Utilisateur 3 2 Application Web Portail WebSSO
  10. 10. Contrôle daccès● Une fois lutilisateur authentifié, il faut récupérer ses habilitations : ● Des rôles ● Des groupes ● Des attributs divers (âge, nationalité, etc.)● Les habilitations donnent accès à des ressources ou des fonctions● Plusieurs modèles existent, le principal étant RBAC (Role Based Access Control)● Le protocole XACML permet de déléguer les demandes dhabilitations à des points de décision (PDP)
  11. 11. Fédération didentités● Notions de cercle de confiance, fournisseur didentités (IDP) et fournisseur de service (SP)● Lutilisateur qui possède plusieurs identités numériques peut les fédérer au sein dun cercle de confiance● Le résultat visible est laccès transparent aux fournisseurs de service, mais dautres avantages existent, comme la déconnexion unique (SLO)
  12. 12. Intérêt de la fédération didentités : protection de la vie privée Fournisseur de service Fournisseur dattribut Fournisseur didentité Fournisseur de serviceInteraction utilisateur Appel distant
  13. 13. Protocoles 17/11/1113 http://lemonldap-ng.org
  14. 14. CAS● Central Authentication Service● Documentation du protocole pour 1.0 et 2.0● Utilisation de tickets de service dans lURL, avec validation par un lien dorsal● Possibilité de tickets proxy● Pas de partage dattributs
  15. 15. Cinématique CAS 1. Premier accès à lapplication Application « CASsifiée » 3. Transmission du ticket 4. Validation du ticket2. Authentification sur CAS et récupération de lidentifiantet récupération dun ticket Serveur CAS
  16. 16. CAS● Requête ticket de service CAS :https://auth.example.com/cas/login?service=http://auth.example.com/cas.pl  ● Réponse ticket de service CAS :http://auth.example.com/cas.pl?ticket=ST­6096f5d3ddb33df6fd79529e2d626a6d
  17. 17. CAS● Requête validation ticket CAS :https://auth.example.com/cas/serviceValidate?service=http://auth.example.com/cas.pl&ticket=ST­6096f5d3ddb33df6fd79529e2d626a6d● Réponse validation ticket CAS version 1 :yescoudot● Réponse validation ticket CAS version 2 :<cas:serviceResponse xmlns:cas=http://www.yale.edu/tp/cas>   <cas:authenticationSuccess>     <cas:user>coudot</cas:user>   </cas:authenticationSuccess> </cas:serviceResponse> 
  18. 18. OpenID● Lidentifiant de lutilisateur contient ladresse du service dauthentification● Aussi basé sur les redirections HTTP● Permet le partage dattributs (mais plusieurs normes possibles...)● Pas de notion de cercle de confiance
  19. 19. Cinématique OpenID 1. Premier accès à lapplication Site Web 4. Réponse OpenID 2. Récupération dinformations OpenID3. Authentification sur le serveurOpenID choisi par lutilisateur 5. Validation de la réponse (facultatif) Serveur OpenID Serveur OpenID Serveur OpenID
  20. 20. Requête OpenIDhttps://auth.vm2.lemonsaml.linagora.com/openidserver/?openid.ns=http://specs.openid.net/auth/2.0&openid.return_to=http://auth.vm1.lemonsaml.linagora.com/%3Fopenid%3D1%26lmAuth%3D2OpenID%26oic.time%3D1304351669­dab6b201beda30620859&openid.claimed_id=http://auth.vm2.lemonsaml.linagora.com/openidserver/coudot&openid.identity=http://auth.vm2.lemonsaml.linagora.com/openidserver/coudot&openid.mode=checkid_setup&openid.realm=http://auth.vm1.lemonsaml.linagora.com/&openid.assoc_handle=1304351670:2TKNyP679ZL6J1S9i0TH:3e0d127809&openid.sreg.optional=nickname,fullname,email 
  21. 21. Réponse OpenIDhttp://auth.vm1.lemonsaml.linagora.com/?openid=1&lmAuth=2OpenID&oic.time=1304351669­dab6b201beda30620859&openid.mode=id_res&openid.claimed_id=http://auth.vm2.lemonsaml.linagora.com/openidserver/coudot&openid.identity=http://auth.vm2.lemonsaml.linagora.com/openidserver/coudot&openid.op_endpoint=https://auth.vm2.lemonsaml.linagora.com/openidserver/&openid.return_to=http://auth.vm1.lemonsaml.linagora.com/%3Fopenid%3D1%26lmAuth%3D2OpenID%26oic.time%3D1304351669­dab6b201beda30620859&openid.response_nonce=2011­05­02T15:56:03ZW3EeYE&openid.assoc_handle=1304351670:2TKNyP679ZL6J1S9i0TH:3e0d127809&openid.ns=http://specs.openid.net/auth/2.0&openid.signed=mode,claimed_id,identity,op_endpoint,return_to,response_nonce,assoc_handle&openid.sig=tOO9kHJgQKajdnb6qTLMCSREdO0%3D 
  22. 22. SAML● Security Assertion Markup Language● XML, XML Security● Cercle de confiance : enregistrement préalable des fournisseurs de services et des fournisseurs didentités● Plusieurs méthodes : GET / POST / Artefact GET / Artefact POST● Gestion de conditions, contextes dauthentification, ...
  23. 23. SAML, gloire et beauté WS-* ID-WSF 1.2 ID-WSF 2.0 ID-FF 1.2SAML 1.0 SAML 2.0 Shibboleth 1
  24. 24. Cinématique SAML 2.0 1. Premier accès à lapplication SP SAML 3. Réponse SAML 2. Authentification sur le serveur SAML choisi par lutilisateur et autorisé dans le cercle de confianceIDP SAML IDP SAML IDP SAML
  25. 25. Requête SAML<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"    ID="_d7607d551380ac97853a6ff4907c4ef01219be97dd" Version="2.0"    IssueInstant="2008­05­27T07:46:06Z" ForceAuthn="true" IsPassive="false"  Destination="https://openidp.feide.no/simplesaml/saml2/idp/SSOService.php"    ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP­POST"    AssertionConsumerServiceURL="http://dev.andreas.feide.no/simplesaml/saml2/sp/AssertionConsumerService.php">   <saml:Issuer>http://dev.andreas.feide.no/simplesaml/saml2/sp/metadata.php</saml:Issuer>    <samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid­format:transient"        AllowCreate="true"/></samlp:AuthnRequest>
  26. 26. <?xml version="1.0"?><samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Réponse SAML xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ID="_162f441d28cff78e3bb1d3c2bf3e48b5ed532605fd" InResponseTo="_ae0216740b5baa4b13c79ffdb2baa82572788fd9a3" Version="2.0" IssueInstant="2008-05-27T07:49:23Z" Destination="https://foodle.feide.no/simplesaml/saml2/sp/AssertionConsumerService.php"> <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://openidp.feide.no</saml:Issuer> <samlp:Status xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"> <samlp:StatusCode xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Value="urn:oasis:names:tc:SAML:2.0:status:Success "/> </samlp:Status> <saml:Assertion Version="2.0" ID="pfxb27555d8-8c06-a339-c7ae-f544b2fd1507" IssueInstant="2008-05-27T07:49:23Z"> <saml:Issuer>https://openidp.feide.no</saml:Issuer> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:Reference URI="#pfxb27555d8-8c06-a339-c7ae-f544b2fd1507"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:DigestValue>WUaqPW4nZ8uPyv+sf8qXsaKhHmk=</ds:DigestValue> </ds:Reference> </ds:SignedInfo><ds:SignatureValue>CRq1VvptjNHenZ5aWkyD6GqQX+XLgNiqElJnyLbMUgiwrFZ5J8IEGtC8h2YiwID15ScxVt6tjQc8R3gXkP967PIlemmhYQ4US7V3oPczu4MECamj+07wAg7BCp05UVU3RI3pvi/2dQGRRX4tlXgkzUMzx8+cBeyZaI/BXKjhKEY=</ds:SignatureValue> <ds:KeyInfo> <ds:X509Data><ds:X509Certificate>MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </ds:Signature> <saml:Subject> <saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" SPNameQualifier="urn:mace:feide.no:services:no.feide.foodle" >_242f88493449e639aab95dd9b92b1d04234ab84fd8</saml:NameID> <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <saml:SubjectConfirmationData NotOnOrAfter="2008-05-27T07:54:23Z" InResponseTo="_ae0216740b5baa4b13c79ffdb2baa82572788fd9a3" Recipient="https://foodle.feide.no/simplesaml/saml2/sp/AssertionConsumerService.php" /> </saml:SubjectConfirmation> </saml:Subject> <saml:Conditions NotBefore="2008-05-27T07:48:53Z" NotOnOrAfter="2008-05-27T07:54:23Z"> <saml:AudienceRestriction> <saml:Audience>urn:mace:feide.no:services:no.feide.foodle</saml:Audience> </saml:AudienceRestriction> </saml:Conditions> <saml:AuthnStatement AuthnInstant="2008-05-27T07:49:23Z" SessionIndex="_4f39c931b35a8dd4540b0a6929a361fa134ec8f7b5"> <saml:AuthnContext> <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef> </saml:AuthnContext> </saml:AuthnStatement> </saml:Assertion></samlp:Response>
  27. 27. Que choisir ?
  28. 28. Différents protocoles pour différents usages● CAS : authentification seulement, applications déjà « CASsifiées »● OpenID : applications grand public● SAML : partage didentité entre organismes
  29. 29. Des solutions libres dans le langage qui vous plaît● Authentic, Authentic 2 : IDP en Python basé sur Lasso● OpenSSO / OpenAM : IDP / SP en Java● LemonLDAP::NG : IDP / SP en Perl basé sur Lasso pour la gestion de SAML 2.0● SimpleSAMLPHP : IDP / SP en PHP● Shibboleth : IDP / SP en Java
  30. 30. Questions ? 17/11/1130 http://lemonldap-ng.org

×