SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
OpenCSI
                                             l’agilité du SI




                 Le SSO, vue d’ensemble
                           Bruno Bonfils
                       bbonfils@opencsi.com




                                1
samedi 29 octobre 11
La présentation

                       ✦   Orientée projet
                       ✦   Critère libre
                       ✦   Aborde les concepts




                                             2
samedi 29 octobre 11
L’histoire d’ACME
                       ✦   Une petite société crée il y a quelques
                           années, qui a vite grossie
                           ✦   Des applications installées de manière
                               autonome, des logins différents
                           ✦   Les commerciaux utilisent SalesForces
                           ✦   Rachat d’une entreprise


                                                 3
samedi 29 octobre 11
L’existant
                                                              Penser à parler des rôles
                                                              au sein de chaque
                                                              application




                                                                App1
                                                                                          SQL
                                                               bonfilsb



                                                                        App2
                                                                                                SQL
                                                                       bbonfils


                                        App
                       App3                             Salesforces               ??
                                     propriétaire
                                                                                                 App web
                                                                                                  Interne

                              LDAP     bbonfils                                                     App
                                                                                                 Internet
                                                    4
samedi 29 octobre 11
L’existant

                       ✦   Des groupes (~ rôles) propre à chaque
                           application
                       ✦   Ces groupes sont liés au métier de
                           l’application




                                              5
samedi 29 octobre 11
Problématiques
                       ✦   Multiple entrepôts de comptes utilisateurs
                           ✦   Changement du mot de passe ?
                           ✦   Politique de mot de passe ?
                       ✦   Identifiant non uniforme
                       ✦   Authentification des applications externes


                                                6
samedi 29 octobre 11
Objectifs 1/2
                       ✦   Utiliser un seul entrepôt de compte
                           utilisateur
                           ✦   Mettre en place une politique de mot de
                               passe uniforme
                       ✦   Une seule authentification (SSO)
                           ✦   Si possible, déconnexion unique


                                                7
samedi 29 octobre 11
Objectifs 2/2

                       ✦   Gérer plus efficacement les rôles
                       ✦   Fournir une solution propre pour
                           l’authentification sur les applications
                           externes




                                               8
samedi 29 octobre 11
Les solutions

                       ✦   Après une recherche, on arrive à :
                           ✦   CAS
                           ✦   OpenAM
                           ✦   LemonLDAP::NG
                           ✦   Vulture


                                              9
samedi 29 octobre 11
Après étude, on constate
                       ✦   Gestion du SSO au sein de l’application
                           ✦   CAS
                       ✦   Un module spécifique au serveur d’application
                           ✦   OpenAM, LemonLDAP::NG
                       ✦   SSO par injection
                           ✦   Vulture, OpenAM / LL::NG



                                                  10
samedi 29 octobre 11
poussons l’étude...


                       ✦   mode de fonctionnement
                       ✦   avantages / inconvénients




                                              11
samedi 29 octobre 11
SSO application


                       ✦   Grand nombre de références Internet à
                           CAS, qui se révèle être un SSO géré au
                           niveau application




                                             12
samedi 29 octobre 11
Fonctionnement CAS (app1)
                                                   App1                     CAS


                               accède à

                               redirige

                               accède à

                           authentification

                       redirige (cookie + jeton)

                           accède à (jeton)

                                                          vérifie le jeton




                                                          13
samedi 29 octobre 11
Fonctionnement CAS (app2)
                                           App2                     CAS


                           accède à

                           redirige

                       accède à (cookie)



                        redirige (jeton)

                       accède à (jeton)

                                                  vérifie le jeton




                                                  14
samedi 29 octobre 11
SSO application, les +

                       ✦   Totalement indépendant de
                           l’environnement d’exécution
                       ✦   Libs CAS existantes pour Java, PHP, .Net
                       ✦   Facile à déployer, à administrer
                       ✦   Performances


                                               15
samedi 29 octobre 11
SSO application
                       ✦   Pas d’autorisation (avec le serveur officiel)
                       ✦   Pas de single logout évident
                       ✦   Cas d’utilisations généralement très simple
                           (pas ou peu de gestions de groupes, etc.)
                       ✦   Que faire quand on a pas la main sur
                           l’application ?


                                               16
samedi 29 octobre 11
SSO application

                       ✦   CAS (Central Authentication Service),
                           développé par l’université de Yale
                       ✦   Très gros déploiement (y compris dans des
                           universités françaises)




                                             17
samedi 29 octobre 11
SSO par agent

                       ✦   Nécessite un agent (module) sur le serveur
                           d’application : Apache, Tomcat, JBoss, etc.
                       ✦   Se substitue à la couche d’authentification
                           (autorisation le cas échéant)




                                              18
samedi 29 octobre 11
OpenAM (app1)
                                           Serveur
                                                                              OpenAM
                                            d’app1


                           accède à

                           redirige

                           accède à

                        authentification

                       redirige (cookie)

                       accède à (cookie)

                                                     information de session




                                                        19
samedi 29 octobre 11
OpenAM (app2)
                                           Serveur
                                                                                OpenAM
                                            d’app2


                       accède à (cookie)
                                                     information de session

                                                     Exemple :
                                                     • liste des groupes
                                                     • attributs :
                                                         • email, prénom, nom




                                                         20
samedi 29 octobre 11
SSO par agent
                       ✦   Avec OpenAM, pour obtenir un nom
                           d’utilisateur :
                           ✦   getPrincipal() en Java (couche JAAS)
                           ✦   Par l’API de l’agent, en Java
                           ✦   Par l’API REST
                           ✦   Ou tout simplement en-tête HTTP


                                                 21
samedi 29 octobre 11
SSO par agent, les +

                       ✦   Plus grande souplesse fonctionnelle
                       ✦   Gestion centralisée possible des agents
                           (configuration, logs, etc.)
                       ✦   Gestion des autorisations dans une certaine
                           mesure (par méthode et par URL)



                                              22
samedi 29 octobre 11
SSO par agent, les -
                       ✦   Complexité
                       ✦   Dépendance à l’agent (logiciel, OS, archi)
                       ✦   Performances (serveur sollicité très
                           souvent)
                       ✦   Fonctionne par cookie (Cross Domain
                           Cookie comme palliatif)


                                               23
samedi 29 octobre 11
Les SSO par agent

                       ✦   OpenAM (ex OpenSSO) probablement le
                           plus ancien (beaucoup de très gros clients)
                       ✦   LemonLDAP::NG, très complet, mais
                           communauté réduite




                                              24
samedi 29 octobre 11
SSO par injection


                       ✦   Injection de formulaire d’authentifications




                                              25
samedi 29 octobre 11
SSO par injection
                                                                 App3


                                           POST /login HTTP/1.0
                                           user=bonfilbs&password=secret
                       SSO



                                                                App
                         POST /auth/login.php HTTP/1.0
                         username=bbonfils&password=secret2   propriétaire




                             26
samedi 29 octobre 11
SSO par injection, les +
                       ✦   Complète transparence au niveau des
                           applications
                       ✦   Permet de gérer le SSO sur les applications
                           propriétaires
                       ✦   Aucune contrainte sur la multiplicité des
                           logins


                                              27
samedi 29 octobre 11
SSO par injection, les -
                       ✦   Performances : tous les flux passent par le
                           SSO
                       ✦   Obligation de stocker les mots de passe
                           des applications sous une forme réversible
                       ✦   Travail d’intégration pour chaque
                           application (formulaires différents)


                                               28
samedi 29 octobre 11
SSO par injection
                       ✦   Il est possible d’utiliser OpenAM ou
                           LemonLDAP::NG, via mod_proxy
                           ✦   injection possible au travers d’en tête
                               HTTP
                           ✦   pas de rejeu de formulaires pour
                               OpenAM (mais pas de portefeuilles de
                               credentials pour LL::NG)


                                                29
samedi 29 octobre 11
Choix du SSO

                       ✦   Projet mené en deux temps :
                           1. SSO interne prioritaire, en attendant on
                              accepte d’utiliser un autre compte pour
                              salesforces
                           2. Réflexion sur l’ouverture à l’extérieure



                                               30
samedi 29 octobre 11
Choix du SSO interne

                       ✦   Il conviendra de :
                           ✦   lister les serveurs d’applications, les
                               applications
                           ✦   se rappeler les contraintes
                               (déconnexion, rôles)



                                                 31
samedi 29 octobre 11
Projet SSO pour acme

                       ✦   En fonction des contraintes imposées,
                           choix de la solution :
                           ✦   peu d’agents CAS gèrent nativement la
                               déconnexion unique
                       ✦   Choix final : OpenAM



                                               32
samedi 29 octobre 11
Projet SSO pour acme

                       ✦   Comment gérer la différence de login ?
                           (bbonfils vs bonfilsb)
                           ✦   Définir REMOTE_USER avec un attribut
                           ✦   Modifié l’application pour utiliser
                               l’attribut



                                                33
samedi 29 octobre 11
Un mot sur les rôles

                       ✦   Dans un monde idéal, les utilisateurs sont
                           associés à des rôles métiers (nombre
                           limités de rôles) qui sont véhiculés par le
                           SSO
                       ✦   Un rôle métier est associé à des rôles
                           applicatifs (au sein de chaque application)


                                               34
samedi 29 octobre 11
Et l’externe ?

                       ✦   Reste la problématique des applications à
                           hébergées par un tierce, donc entités
                           commerciales différentes
                           ✦   on évite les échanges directs entre les SI




                                                35
samedi 29 octobre 11
La fédération

                       ✦   Deux entités différentes : on parle donc de
                           fédération
                           ✦   nécessite une relation de confiance
                       ✦   Techniquement, un seul choix standard :
                           SAML



                                               36
samedi 29 octobre 11
La fédération
                       ✦   Quelques termes :
                           ✦   Identity Provider (IdP) c’est le
                               fournisseur, celui qui vérifie
                               l’authentification d’un utilisateur (ici
                               ACME)
                           ✦   Service Provider (SP) un fournisseur de
                               service (ici SalesForce)


                                                 37
samedi 29 octobre 11
Fonctionnement SAML
                                              SP        IdP


                            accède à

                             redirige

                            accède à

                         authentification

                       redirige (assertion)

                       accède à (assertion)




                                                   38
samedi 29 octobre 11
Concrètement

                       ✦   Configuration d’OpenAM en tant qu’IdP
                           ✦   il n’est même pas nécessaire de l’exposer
                               sur Internet (mécanisme de redirection)
                       ✦   SalesForces accepte les assertions
                           ✦   Vérification par signature


                                                39
samedi 29 octobre 11
La (vraie) fédération
                                                  IdP




                                        SP

                             IdP

                   SP
                                             SP
                                                        SP

                        SP



                                   40
samedi 29 octobre 11
Quelques mots sur OpenAM




                       41
samedi 29 octobre 11
Un peu plus sur OpenAM

                       Hiérarchie des utilisateurs :
                       ✦ / (tous)

                       ✦ /employes

                          ✦ /employes/interne

                          ✦ /employes/prestataires

                       ✦ /fournisseurs




                                            42
samedi 29 octobre 11
Un peu plus sur OpenAM
                       ✦   De la même manière que UNIX, distinction
                           entre
                           ✦   identification des utilisateurs (attributs)
                           ✦   authentification des utilisateurs
                       ✦   Cas client
                           ✦   connexion sous un utilisateur sans
                               connaître son mot de passe

                                                 43
samedi 29 octobre 11
OpenCSI
                                                 l’agilité du SI




                       Questions ?
                       <bbonfils@opencsi.com>
                       http://www.opencsi.com/




                                 44
samedi 29 octobre 11

Vue d'ensemble du SSO

  • 1. OpenCSI l’agilité du SI Le SSO, vue d’ensemble Bruno Bonfils bbonfils@opencsi.com 1 samedi 29 octobre 11
  • 2. La présentation ✦ Orientée projet ✦ Critère libre ✦ Aborde les concepts 2 samedi 29 octobre 11
  • 3. L’histoire d’ACME ✦ Une petite société crée il y a quelques années, qui a vite grossie ✦ Des applications installées de manière autonome, des logins différents ✦ Les commerciaux utilisent SalesForces ✦ Rachat d’une entreprise 3 samedi 29 octobre 11
  • 4. L’existant Penser à parler des rôles au sein de chaque application App1 SQL bonfilsb App2 SQL bbonfils App App3 Salesforces ?? propriétaire App web Interne LDAP bbonfils App Internet 4 samedi 29 octobre 11
  • 5. L’existant ✦ Des groupes (~ rôles) propre à chaque application ✦ Ces groupes sont liés au métier de l’application 5 samedi 29 octobre 11
  • 6. Problématiques ✦ Multiple entrepôts de comptes utilisateurs ✦ Changement du mot de passe ? ✦ Politique de mot de passe ? ✦ Identifiant non uniforme ✦ Authentification des applications externes 6 samedi 29 octobre 11
  • 7. Objectifs 1/2 ✦ Utiliser un seul entrepôt de compte utilisateur ✦ Mettre en place une politique de mot de passe uniforme ✦ Une seule authentification (SSO) ✦ Si possible, déconnexion unique 7 samedi 29 octobre 11
  • 8. Objectifs 2/2 ✦ Gérer plus efficacement les rôles ✦ Fournir une solution propre pour l’authentification sur les applications externes 8 samedi 29 octobre 11
  • 9. Les solutions ✦ Après une recherche, on arrive à : ✦ CAS ✦ OpenAM ✦ LemonLDAP::NG ✦ Vulture 9 samedi 29 octobre 11
  • 10. Après étude, on constate ✦ Gestion du SSO au sein de l’application ✦ CAS ✦ Un module spécifique au serveur d’application ✦ OpenAM, LemonLDAP::NG ✦ SSO par injection ✦ Vulture, OpenAM / LL::NG 10 samedi 29 octobre 11
  • 11. poussons l’étude... ✦ mode de fonctionnement ✦ avantages / inconvénients 11 samedi 29 octobre 11
  • 12. SSO application ✦ Grand nombre de références Internet à CAS, qui se révèle être un SSO géré au niveau application 12 samedi 29 octobre 11
  • 13. Fonctionnement CAS (app1) App1 CAS accède à redirige accède à authentification redirige (cookie + jeton) accède à (jeton) vérifie le jeton 13 samedi 29 octobre 11
  • 14. Fonctionnement CAS (app2) App2 CAS accède à redirige accède à (cookie) redirige (jeton) accède à (jeton) vérifie le jeton 14 samedi 29 octobre 11
  • 15. SSO application, les + ✦ Totalement indépendant de l’environnement d’exécution ✦ Libs CAS existantes pour Java, PHP, .Net ✦ Facile à déployer, à administrer ✦ Performances 15 samedi 29 octobre 11
  • 16. SSO application ✦ Pas d’autorisation (avec le serveur officiel) ✦ Pas de single logout évident ✦ Cas d’utilisations généralement très simple (pas ou peu de gestions de groupes, etc.) ✦ Que faire quand on a pas la main sur l’application ? 16 samedi 29 octobre 11
  • 17. SSO application ✦ CAS (Central Authentication Service), développé par l’université de Yale ✦ Très gros déploiement (y compris dans des universités françaises) 17 samedi 29 octobre 11
  • 18. SSO par agent ✦ Nécessite un agent (module) sur le serveur d’application : Apache, Tomcat, JBoss, etc. ✦ Se substitue à la couche d’authentification (autorisation le cas échéant) 18 samedi 29 octobre 11
  • 19. OpenAM (app1) Serveur OpenAM d’app1 accède à redirige accède à authentification redirige (cookie) accède à (cookie) information de session 19 samedi 29 octobre 11
  • 20. OpenAM (app2) Serveur OpenAM d’app2 accède à (cookie) information de session Exemple : • liste des groupes • attributs : • email, prénom, nom 20 samedi 29 octobre 11
  • 21. SSO par agent ✦ Avec OpenAM, pour obtenir un nom d’utilisateur : ✦ getPrincipal() en Java (couche JAAS) ✦ Par l’API de l’agent, en Java ✦ Par l’API REST ✦ Ou tout simplement en-tête HTTP 21 samedi 29 octobre 11
  • 22. SSO par agent, les + ✦ Plus grande souplesse fonctionnelle ✦ Gestion centralisée possible des agents (configuration, logs, etc.) ✦ Gestion des autorisations dans une certaine mesure (par méthode et par URL) 22 samedi 29 octobre 11
  • 23. SSO par agent, les - ✦ Complexité ✦ Dépendance à l’agent (logiciel, OS, archi) ✦ Performances (serveur sollicité très souvent) ✦ Fonctionne par cookie (Cross Domain Cookie comme palliatif) 23 samedi 29 octobre 11
  • 24. Les SSO par agent ✦ OpenAM (ex OpenSSO) probablement le plus ancien (beaucoup de très gros clients) ✦ LemonLDAP::NG, très complet, mais communauté réduite 24 samedi 29 octobre 11
  • 25. SSO par injection ✦ Injection de formulaire d’authentifications 25 samedi 29 octobre 11
  • 26. SSO par injection App3 POST /login HTTP/1.0 user=bonfilbs&password=secret SSO App POST /auth/login.php HTTP/1.0 username=bbonfils&password=secret2 propriétaire 26 samedi 29 octobre 11
  • 27. SSO par injection, les + ✦ Complète transparence au niveau des applications ✦ Permet de gérer le SSO sur les applications propriétaires ✦ Aucune contrainte sur la multiplicité des logins 27 samedi 29 octobre 11
  • 28. SSO par injection, les - ✦ Performances : tous les flux passent par le SSO ✦ Obligation de stocker les mots de passe des applications sous une forme réversible ✦ Travail d’intégration pour chaque application (formulaires différents) 28 samedi 29 octobre 11
  • 29. SSO par injection ✦ Il est possible d’utiliser OpenAM ou LemonLDAP::NG, via mod_proxy ✦ injection possible au travers d’en tête HTTP ✦ pas de rejeu de formulaires pour OpenAM (mais pas de portefeuilles de credentials pour LL::NG) 29 samedi 29 octobre 11
  • 30. Choix du SSO ✦ Projet mené en deux temps : 1. SSO interne prioritaire, en attendant on accepte d’utiliser un autre compte pour salesforces 2. Réflexion sur l’ouverture à l’extérieure 30 samedi 29 octobre 11
  • 31. Choix du SSO interne ✦ Il conviendra de : ✦ lister les serveurs d’applications, les applications ✦ se rappeler les contraintes (déconnexion, rôles) 31 samedi 29 octobre 11
  • 32. Projet SSO pour acme ✦ En fonction des contraintes imposées, choix de la solution : ✦ peu d’agents CAS gèrent nativement la déconnexion unique ✦ Choix final : OpenAM 32 samedi 29 octobre 11
  • 33. Projet SSO pour acme ✦ Comment gérer la différence de login ? (bbonfils vs bonfilsb) ✦ Définir REMOTE_USER avec un attribut ✦ Modifié l’application pour utiliser l’attribut 33 samedi 29 octobre 11
  • 34. Un mot sur les rôles ✦ Dans un monde idéal, les utilisateurs sont associés à des rôles métiers (nombre limités de rôles) qui sont véhiculés par le SSO ✦ Un rôle métier est associé à des rôles applicatifs (au sein de chaque application) 34 samedi 29 octobre 11
  • 35. Et l’externe ? ✦ Reste la problématique des applications à hébergées par un tierce, donc entités commerciales différentes ✦ on évite les échanges directs entre les SI 35 samedi 29 octobre 11
  • 36. La fédération ✦ Deux entités différentes : on parle donc de fédération ✦ nécessite une relation de confiance ✦ Techniquement, un seul choix standard : SAML 36 samedi 29 octobre 11
  • 37. La fédération ✦ Quelques termes : ✦ Identity Provider (IdP) c’est le fournisseur, celui qui vérifie l’authentification d’un utilisateur (ici ACME) ✦ Service Provider (SP) un fournisseur de service (ici SalesForce) 37 samedi 29 octobre 11
  • 38. Fonctionnement SAML SP IdP accède à redirige accède à authentification redirige (assertion) accède à (assertion) 38 samedi 29 octobre 11
  • 39. Concrètement ✦ Configuration d’OpenAM en tant qu’IdP ✦ il n’est même pas nécessaire de l’exposer sur Internet (mécanisme de redirection) ✦ SalesForces accepte les assertions ✦ Vérification par signature 39 samedi 29 octobre 11
  • 40. La (vraie) fédération IdP SP IdP SP SP SP SP 40 samedi 29 octobre 11
  • 41. Quelques mots sur OpenAM 41 samedi 29 octobre 11
  • 42. Un peu plus sur OpenAM Hiérarchie des utilisateurs : ✦ / (tous) ✦ /employes ✦ /employes/interne ✦ /employes/prestataires ✦ /fournisseurs 42 samedi 29 octobre 11
  • 43. Un peu plus sur OpenAM ✦ De la même manière que UNIX, distinction entre ✦ identification des utilisateurs (attributs) ✦ authentification des utilisateurs ✦ Cas client ✦ connexion sous un utilisateur sans connaître son mot de passe 43 samedi 29 octobre 11
  • 44. OpenCSI l’agilité du SI Questions ? <bbonfils@opencsi.com> http://www.opencsi.com/ 44 samedi 29 octobre 11