Your SlideShare is downloading. ×
SAML, Open ID et CAS dans un seul WebSSO : LemonLDAP::NG
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

SAML, Open ID et CAS dans un seul WebSSO : LemonLDAP::NG

3,015
views

Published on

SAML, Open ID et CAS dans un seul WebSSO : LemonLDAP::NG …

SAML, Open ID et CAS dans un seul WebSSO : LemonLDAP::NG
at Solutions Linux / Open Source

LemonLDAP::NG est un logiciel libre de WebSSO et de contrôle d'accès aux applications Web. C'est également un fournisseur d'identités SAML, CAS et OpenID.

Vous découvrirez lors de cette conférence comment il est possible de s'affranchir de la gestion du mot de passe de ses utilisateurs, en déléguant l'authentification et les contrôle d'accès à une application à un produit de WebSSO.

Cela permet d'intégrer l'application sans effort dans des systèmes d'informations hétérogènes, en reposant sur des méthodes aussi diverses que les annuaires LDAP, les bases de données, les certificats SSL, Kerberos, etc.

La fonctionnalité de fournisseur d'identité permet également d'établir un cercle de confiance, pour par exemple propager l'authentification des utilisateurs aux applications “cloud”, comme Google Apps ou SalesForce.

Published in: Technology, Design

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,015
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
96
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. SAML, OpenID et CAS dans un seul WebSSO : LemonLDAP::NG Clément OUDOT Architecte LinID [email_address]
  • 2. Sommaire
    • Présentations
    • 3. Le WebSSO
    • 4. Les protocoles :
    • LemonLDAP::NG
  • 7. Présentations
  • 8. LINAGORA : qui sommes nous ? Nos principaux clients Mission : Logiciels et services Open source pour réussir les grands projets du libre Fondée : Mai 2000 Capital: Capital privé (principalement détenu par les fondateurs) Nombre d'ingénieurs : 150
  • 9. LINAGORA : nos métiers
  • 10. Clément OUDOT
    • Contributeur LemonLDAP::NG depuis 2007, Leader depuis 2011, en relai de Xavier GUIMARD
    • 11. Leader du projet LDAP Tool Box
    • 12. Actif dans les communautés OpenLDAP et LDAP Synchronization Connector
    • 13. Membre de la cellule Identité / Sécurité du Groupe LINAGORA depuis 2003
    • 14. Collabore au produit LINAGORA LinID
  • 15. Le WebSSO
  • 16. Définition du WebSSO
    • SSO signifie « Single Sign On », qui peut se traduire en français par « authentification unique »
    • Le WebSSO se consacre à l'authentification unique pour les applications Web, c'est-à-dire des applications client-serveur dont le client est un navigateur Web (IE, Firefox, etc.)
    • Le principe de base est d'intercepter les requêtes entre le client et le serveur, et indiquer au serveur que le client est bien authentifié
  • 17. Comment ça marche ?
  • 18. Utilisateur Utilisateur Application Web Portail WebSSO 1 2 3
  • 19. SSO par délégation
  • 20. SSO par mandataire inverse (reverse proxy)
  • 21. Les protocoles
  • 22. CAS
    • Central Authentication Service
    • 23. Documentation du protocole pour 1.0 et 2.0
    • 24. Utilisation de tickets de service dans l'URL, avec validation par un lien dorsal
    • 25. Possibilité de tickets proxy
    • 26. Pas de partage d'attributs
  • 27. CAS
  • 28. 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
    • 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 :
    <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'> <cas:authenticationSuccess> <cas:user>coudot</cas:user> </cas:authenticationSuccess> </cas:serviceResponse>
  • 29. OpenID
    • L'identifiant de l'utilisateur contient l'adresse du service d'authentification
    • 30. Aussi basé sur les redirections HTTP
    • 31. Permet le partage d'attributs (mais plusieurs normes possibles...)
    • 32. Pas de notion de cercle de confiance
  • 33. OpenID
  • 34. Requête OpenID https://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
  • 35. Réponse OpenID http://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
  • 36. SAML
    • Security Assertion Markup Language
    • 37. Sécurité
    • 38. XML, XML Security
    • 39. Sécurité
    • 40. Cercle de confiance : enregistrement préalable des fournisseurs de services et des fournisseurs d'identités
    • 41. Sécurité
    • 42. Plusieurs méthodes : GET / POST / Artefact GET / Artefact POST
    • 43. Sécurité
  • 44. SAML
  • 45. Requête SAML <samlp:AuthnRequest xmlns:samlp=&quot;urn:oasis:names:tc:SAML:2.0:protocol&quot; xmlns:saml=&quot;urn:oasis:names:tc:SAML:2.0:assertion&quot; ID=&quot;_d7607d551380ac97853a6ff4907c4ef01219be97dd&quot; Version=&quot;2.0&quot; IssueInstant=&quot;2008-05-27T07:46:06Z&quot; ForceAuthn=&quot;true&quot; IsPassive=&quot;false&quot; Destination=&quot;https://openidp.feide.no/simplesaml/saml2/idp/SSOService.php&quot; ProtocolBinding=&quot;urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST&quot; AssertionConsumerServiceURL=&quot;http://dev.andreas.feide.no/simplesaml/saml2/sp/AssertionConsumerService.php&quot;> <saml:Issuer>http://dev.andreas.feide.no/simplesaml/saml2/sp/metadata.php</saml:Issuer> <samlp:NameIDPolicy Format=&quot;urn:oasis:names:tc:SAML:2.0:nameid-format:transient&quot; AllowCreate=&quot;true&quot;/> </samlp:AuthnRequest>
  • 46. Réponse SAML <?xml version=&quot;1.0&quot;?> <samlp:Response xmlns:samlp=&quot;urn:oasis:names:tc:SAML:2.0:protocol&quot; xmlns:saml=&quot;urn:oasis:names:tc:SAML:2.0:assertion&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; ID=&quot;_162f441d28cff78e3bb1d3c2bf3e48b5ed532605fd&quot; InResponseTo=&quot;_ae0216740b5baa4b13c79ffdb2baa82572788fd9a3&quot; Version=&quot;2.0&quot; IssueInstant=&quot;2008-05-27T07:49:23Z&quot; Destination=&quot;https://foodle.feide.no/simplesaml/saml2/sp/AssertionConsumerService.php&quot;> <saml:Issuer xmlns:saml=&quot;urn:oasis:names:tc:SAML:2.0:assertion&quot;>https://openidp.feide.no</saml:Issuer> <samlp:Status xmlns:samlp=&quot;urn:oasis:names:tc:SAML:2.0:protocol&quot;> <samlp:StatusCode xmlns:samlp=&quot;urn:oasis:names:tc:SAML:2.0:protocol&quot; Value=&quot;urn:oasis:names:tc:SAML:2.0: status:Success &quot;/> </samlp:Status> <saml:Assertion Version=&quot;2.0&quot; ID=&quot;pfxb27555d8-8c06-a339-c7ae-f544b2fd1507&quot; IssueInstant=&quot;2008-05-27T07:49:23Z&quot;> <saml:Issuer>https://openidp.feide.no</saml:Issuer> <ds:Signature xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot;> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/> <ds:SignatureMethod Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&quot;/> <ds:Reference URI=&quot;#pfxb27555d8-8c06-a339-c7ae-f544b2fd1507&quot;> <ds:Transforms> <ds:Transform Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#enveloped-signature&quot;/> <ds:Transform Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/> </ds:Transforms> <ds:DigestMethod Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#sha1&quot;/> <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=&quot;urn:oasis:names:tc:SAML:2.0:nameid-format:transient&quot; SPNameQualifier=&quot;urn:mace:feide.no:services:no.feide.foodle&quot; >_242f88493449e639aab95dd9b92b1d04234ab84fd8</saml:NameID> <saml:SubjectConfirmation Method=&quot;urn:oasis:names:tc:SAML:2.0:cm:bearer&quot;> <saml:SubjectConfirmationData NotOnOrAfter=&quot;2008-05-27T07:54:23Z&quot; InResponseTo=&quot;_ae0216740b5baa4b13c79ffdb2baa82572788fd9a3&quot; Recipient=&quot;https://foodle.feide.no/simplesaml/saml2/sp/AssertionConsumerService.php&quot; /> </saml:SubjectConfirmation> </saml:Subject> <saml:Conditions NotBefore=&quot;2008-05-27T07:48:53Z&quot; NotOnOrAfter=&quot;2008-05-27T07:54:23Z&quot;> <saml:AudienceRestriction> <saml:Audience>urn:mace:feide.no:services:no.feide.foodle</saml:Audience> </saml:AudienceRestriction> </saml:Conditions> <saml:AuthnStatement AuthnInstant=&quot;2008-05-27T07:49:23Z&quot; SessionIndex=&quot;_4f39c931b35a8dd4540b0a6929a361fa134ec8f7b5&quot;> <saml:AuthnContext> <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef> </saml:AuthnContext> </saml:AuthnStatement> </saml:Assertion> </samlp:Response>
  • 47.  
  • 48. Historique
    • LemonLDAP a été créé en 2003 par Eric GERMAN (Ministère des Finances, France) pour remplace Novell iChain (Novell -> llevon -> Lemon)
    • 49. Comme Novell ou SiteMinder, LemonLDAP utilise des en-têtes HTTP pour propager l'identité de l'utilisateur
    • 50. LemonLDAP::NG est une réécriture complète de LemonLDAP par Xavier GUIMARD (Gendarmerie Nationale, France) en 2005
    • 51. Thomas CHEMINEAU et Clément OUDOT complètent l'équipe de développement
  • 52. Parlons technique
    • LemonLDAP::NG repose sur trois composants :
      • Le portail (Portal) : interface d'authentification, menu des applications, changement de mot de passe
      • 53. Le handler (Handler) : agent réalisant le contrôle des accès aux applications Web
      • 54. Le manager (Manager) : interface de configuration, explorateur de sessions
    • Tous les composants sont écrits en Perl
    • 55. Nécessite Apache et mod_perl
  • 56. Vue macroscopique
  • 57. Cinématique principale
  • 58. Les phases d'authentification
    • LemonLDAP::NG découpe l'authentification en plusieurs phases :
      • Vérification des sessions existantes
      • 59. Récupération des données d'authentification
      • 60. Recherche de l'utilisateur
      • 61. Authentification
      • 62. Stockage des données dans la session
      • 63. Écriture du cookie
      • 64. Redirection (menu ou application demandée)
  • 65. Les différentes bases
    • Plusieurs « bases » sont utilisées :
      • Authentification : comment vérifier les données d'authentification
      • 66. Utilisateurs : où trouver les données de l'utilisateur
      • 67. Mots de passe : où changer le mot de passe de l'utilisateur
    • Exemple d'utilisation : authentification par Kerberos, données de l'utilisateur dans un annuaire LDAP
  • 68. Méthodes d'authentification
    • LemonLDAP::NG supporte de nombreuses méthodes d'authentification :
  • 76. Rendre mon application compatible
    • LemonLDAP::NG est très peu intrusif :
      • Pas de module à importer dans le code
      • 77. Pas de WebService à appeler
      • 78. Simplement lire une en-tête HTTP !
    • Une application qui utilise l'authentification Apache (REMOTE_USER) est compatible !
    • 79. Adaptations possibles de l'application :
      • Auto-création du compte local de l'utilisateur
      • 80. Suppression du formulaire d'authentification
  • 81. Support CAS, OpenID et SAML
    • LemonLDAP::NG peut déléguer son authentification à CAS, OpenID et SAML (avec récupération d'attributs en OpenID et SAML)
    • 82. LemonLDAP::NG peut fournir l'identité par CAS, OpenID et SAML (avec fourniture d'attributs pour OpenID et SAML)
    • 83. LemonLDAP::NG peut agir comme un pont entre tous ces protocoles
  • 84. Exemple d'intégration avec Google Apps
  • 85. Questions ?
  • 86. Merci de votre attention Contact : LINAGORA – Siège social 80, rue Roque de Fillol 92800 PUTEAUX FRANCE Tél. : 0 810 251 251 (tarif local) Fax : +33 (0)1 46 96 63 64 Mail : [email_address] Web : www.linagora.com Photos de la présentation tirées de Flickr (Creative Commons)