Vue d'ensemble du SSO

of 44 /44
l’agilité du SI OpenCSI Le SSO, vue d’ensemble Bruno Bonfils bbonfi[email protected] 1 samedi 29 octobre 11

Embed Size (px)

description

 

Transcript of Vue d'ensemble du SSO

Page 1: Vue d'ensemble du SSO

l’agilité du SIOpenCSI

Le SSO, vue d’ensembleBruno Bonfils

[email protected]

1samedi 29 octobre 11

Page 2: Vue d'ensemble du SSO

La présentation

✦ Orientée projet

✦ Critère libre

✦ Aborde les concepts

2samedi 29 octobre 11

Page 3: Vue d'ensemble du SSO

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

3samedi 29 octobre 11

Page 4: Vue d'ensemble du SSO

L’existant

4

App1bonfilsb

App2bbonfils

SQL

App3

LDAP

Apppropriétaire

SQL

bbonfils

App webInterne

AppInternet

Salesforces ??

Penser à parler des rôles au sein de chaque application

samedi 29 octobre 11

Page 5: Vue d'ensemble du SSO

L’existant

✦ Des groupes (~ rôles) propre à chaque application

✦ Ces groupes sont liés au métier de l’application

5samedi 29 octobre 11

Page 6: Vue d'ensemble du SSO

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

6samedi 29 octobre 11

Page 7: Vue d'ensemble du SSO

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

7samedi 29 octobre 11

Page 8: Vue d'ensemble du SSO

Objectifs 2/2

✦ Gérer plus efficacement les rôles

✦ Fournir une solution propre pour l’authentification sur les applications externes

8samedi 29 octobre 11

Page 9: Vue d'ensemble du SSO

Les solutions

✦ Après une recherche, on arrive à :

✦ CAS

✦ OpenAM

✦ LemonLDAP::NG

✦ Vulture

9samedi 29 octobre 11

Page 10: Vue d'ensemble du SSO

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

10samedi 29 octobre 11

Page 11: Vue d'ensemble du SSO

poussons l’étude...

✦ mode de fonctionnement

✦ avantages / inconvénients

11samedi 29 octobre 11

Page 12: Vue d'ensemble du SSO

SSO application

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

12samedi 29 octobre 11

Page 13: Vue d'ensemble du SSO

Fonctionnement CAS (app1)

13

App1 CAS

accède à

redirige

accède à

authentification

redirige (cookie + jeton)

accède à (jeton)

vérifie le jeton

samedi 29 octobre 11

Page 14: Vue d'ensemble du SSO

Fonctionnement CAS (app2)

14

App2 CAS

accède à

redirige

accède à (cookie)

redirige (jeton)

accède à (jeton)

vérifie le jeton

samedi 29 octobre 11

Page 15: Vue d'ensemble du SSO

SSO application, les +

✦ Totalement indépendant de l’environnement d’exécution

✦ Libs CAS existantes pour Java, PHP, .Net

✦ Facile à déployer, à administrer

✦ Performances

15samedi 29 octobre 11

Page 16: Vue d'ensemble du SSO

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 ?

16samedi 29 octobre 11

Page 17: Vue d'ensemble du SSO

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)

17samedi 29 octobre 11

Page 18: Vue d'ensemble du SSO

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)

18samedi 29 octobre 11

Page 19: Vue d'ensemble du SSO

OpenAM (app1)

19

Serveur d’app1 OpenAM

accède à

redirige

accède à

authentification

redirige (cookie)

accède à (cookie)

information de session

samedi 29 octobre 11

Page 20: Vue d'ensemble du SSO

OpenAM (app2)

20

Serveur d’app2 OpenAM

accède à (cookie)

information de session

Exemple :• liste des groupes• attributs :

• email, prénom, nom

samedi 29 octobre 11

Page 21: Vue d'ensemble du SSO

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

21samedi 29 octobre 11

Page 22: Vue d'ensemble du SSO

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)

22samedi 29 octobre 11

Page 23: Vue d'ensemble du SSO

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)

23samedi 29 octobre 11

Page 24: Vue d'ensemble du SSO

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

24samedi 29 octobre 11

Page 25: Vue d'ensemble du SSO

SSO par injection

✦ Injection de formulaire d’authentifications

25samedi 29 octobre 11

Page 26: Vue d'ensemble du SSO

SSO par injection

26

App3

Apppropriétaire

SSO

POST /auth/login.php HTTP/1.0username=bbonfils&password=secret2

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

samedi 29 octobre 11

Page 27: Vue d'ensemble du SSO

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

27samedi 29 octobre 11

Page 28: Vue d'ensemble du SSO

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)

28samedi 29 octobre 11

Page 29: Vue d'ensemble du SSO

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)

29samedi 29 octobre 11

Page 30: Vue d'ensemble du SSO

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

30samedi 29 octobre 11

Page 31: Vue d'ensemble du SSO

Choix du SSO interne

✦ Il conviendra de :

✦ lister les serveurs d’applications, les applications

✦ se rappeler les contraintes (déconnexion, rôles)

31samedi 29 octobre 11

Page 32: Vue d'ensemble du SSO

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

32samedi 29 octobre 11

Page 33: Vue d'ensemble du SSO

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

33samedi 29 octobre 11

Page 34: Vue d'ensemble du SSO

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)

34samedi 29 octobre 11

Page 35: Vue d'ensemble du SSO

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

35samedi 29 octobre 11

Page 36: Vue d'ensemble du SSO

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

36samedi 29 octobre 11

Page 37: Vue d'ensemble du SSO

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)

37samedi 29 octobre 11

Page 38: Vue d'ensemble du SSO

Fonctionnement SAML

38

SP IdP

accède à

redirige

accède à

authentification

redirige (assertion)

accède à (assertion)

samedi 29 octobre 11

Page 39: Vue d'ensemble du SSO

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

39samedi 29 octobre 11

Page 40: Vue d'ensemble du SSO

La (vraie) fédération

40

SP

SP

IdP

SP

IdP

SPSP

samedi 29 octobre 11

Page 41: Vue d'ensemble du SSO

Quelques mots sur OpenAM

41samedi 29 octobre 11

Page 42: Vue d'ensemble du SSO

Un peu plus sur OpenAM

Hiérarchie des utilisateurs :✦ / (tous)✦ /employes

✦ /employes/interne✦ /employes/prestataires

✦ /fournisseurs

42samedi 29 octobre 11

Page 43: Vue d'ensemble du SSO

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

43samedi 29 octobre 11

Page 44: Vue d'ensemble du SSO

l’agilité du SIOpenCSI

Questions ?<[email protected]>http://www.opencsi.com/

44samedi 29 octobre 11