CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 6,056 views

Avec la multiplication des applications Web, la question de l’authentification à ces applications est devenue primordiale. Pour simplifier la vie de l’utilisateur, le concept de SSO (Single Sign ...

Avec la multiplication des applications Web, la question de l’authentification à ces applications est devenue primordiale. Pour simplifier la vie de l’utilisateur, le concept de SSO (Single Sign On) a été inventé. Dans ce domaine, plusieurs protocoles et standards existent, comme CAS, OpenID, Liberty Alliance, Shibboleth ou SAML. Quelles sont les différences ? Comment utiliser ces protocoles dans les applications ? Cette conférence tentera de répondre à ces questions en présentant des cas concrets d’implémentation.

Statistics

Views

Total Views
6,056
Views on SlideShare
6,014
Embed Views
42

Actions

Likes
3
Downloads
122
Comments
1

3 Embeds 42

http://lanyrd.com 38
http://www.slideshare.net 3
http://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • It would be great if there is an English version of this ppt.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples Presentation Transcript

  • Rencontres Mondiales Du Logiciel LibreCAS, OpenID, SAML : concepts, différences et exemples Clément OUDOT 13 juillet 2011
  • Sommaire● WebSSO, contrôle daccès et fédération didentité● Les protocoles ● CAS ● OpenID ● SAML● Que choisir ? 12/07/112 http://lemonldap-ng.org
  • Présentations 12/07/113 http://lemonldap-ng.org
  • 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 12/07/114 http://lemonldap-ng.org
  • 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 12/07/115 http://lemonldap-ng.org
  • WebSSO, contrôle daccès et fédération didentité 12/07/116 http://lemonldap-ng.org
  • 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é 12/07/117 http://lemonldap-ng.org
  • Intérêt du WebSSO : éviter la multiplication des identités 12/07/118 http://lemonldap-ng.org
  • Cinématique simple 1Utilisateur 3 2 Application Web Portail WebSSO
  • 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)
  • 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)
  • 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
  • Protocoles 12/07/1113 http://lemonldap-ng.org
  • 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
  • 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
  • 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
  • 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> 
  • 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
  • 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
  • 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 
  • 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 
  • 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, ...
  • SAML, gloire et beauté WS-* ID-WSF 1.2 ID-WSF 2.0 ID-FF 1.2SAML 1.0 SAML 2.0 Shibboleth 1
  • 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
  • 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>
  • <?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>
  • Que choisir ?
  • Différents protocoles pour différents usages● CAS : authentification seulement, applications déjà « CASsifiées »● OpenID : applications grand public● SAML : partage didentité entre organismes
  • Des solutions libres dans le langage qui vous plaît● Authentic, Authentic 2 : IDP en Python basé sur Lasso (attendez la 3e conférence...)● OpenSSO / OpenAM : IDP / SP en Java (attendez la 2e conférence...)● LemonLDAP::NG : IDP / SP en Perl basé sur Lasso pour la gestion de SAML 2.0● SimpleSAMLPHP : IDP / SP en PHP
  • Questions ? 12/07/1130 http://lemonldap-ng.org