« SSO » : différence entre les versions

De Justine's wiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 1 : Ligne 1 :


= Single Sign-On =
= Single Sign-On =
== Liens ==
Panorama de solutions : http://www.open-source-guide.com/Solutions/Developpement-et-couches-intermediaires/Authentification-federation-et-de-gestion-d-identite


== Présentation ==
== Présentation ==
Ligne 80 : Ligne 84 :
= Authentification web, SSO, fédération d'identités =
= Authentification web, SSO, fédération d'identités =


Il faut pouvoir gérer le contrôle d'accès aux applications web. Pour cela :
Il faut pouvoir gérer le contrôle d'accès aux applications web. Pour cela :


*On veut restreindre l'accès à une partie du serveur à une population donnée  
*On veut restreindre l'accès à une partie du serveur à une population donnée  
Ligne 88 : Ligne 92 :
=== Apache et les modules d'auth ===
=== Apache et les modules d'auth ===


On peut étendre les fonctionnalités du serveur web Apache en ajoutant des modules :
On peut étendre les fonctionnalités du serveur web Apache en ajoutant des modules :


*mod_auth : utilisation des fichiers htpasswd et htgroup  
*mod_auth : utilisation des fichiers htpasswd et htgroup  
*mod_ssl : gestion SSL et authentification avec certificats  
*mod_ssl : gestion SSL et authentification avec certificats  
*mod_authldap : authentification LDAP  
*mod_authldap : authentification LDAP  
*mod_authZldap : authentification avec certificats puis autorisation basée sur LDAP  
*mod_authZldap : authentification avec certificats puis autorisation basée sur LDAP  
*etc : http://modules.apache.org  
*etc : [http://modules.apache.org http://modules.apache.org]


Authentification et autorisation sont deux processus disjoints (cf. : le haut de la page)
Authentification et autorisation sont deux processus disjoints (cf. : le haut de la page)


=== Les briques d'un SSO ===
=== Les briques d'un SSO ===


*Le serveur d'authentification : c'est un élément central. Il authentifie l'utilisateur, assure la persistance de la connexion, propage l'identité vers les applications et se répose sur un ou des référentiels (LDAP, NIS...).  
*Le serveur d'authentification : c'est un élément central. Il authentifie l'utilisateur, assure la persistance de la connexion, propage l'identité vers les applications et se répose sur un ou des référentiels (LDAP, NIS...).  
*Les agents d'authentification : ils sont devant chaque ressource à protéger. Il servent d'interface entre le serveur et l'application : redirigent l'utilisateur vers le serveur d'authentification et transmettent sont identité vers l'application. Il peuvent être implémentés sous la forme de librairies clients ou de modules intégrés au serveur web.  
*Les agents d'authentification : ils sont devant chaque ressource à protéger. Il servent d'interface entre le serveur et l'application : redirigent l'utilisateur vers le serveur d'authentification et transmettent sont identité vers l'application. Il peuvent être implémentés sous la forme de librairies clients ou de modules intégrés au serveur web.  


=== Techniques utilisées ===
=== Techniques utilisées ===


*Pour la communication vers l'utilisateur distant :  
*Pour la communication vers l'utilisateur distant :  
**Requêtes GET ou formulaires POST  
**Requêtes GET ou formulaires POST  
**Redirections  
**Redirections  
**JS   
**JS   
*Persistence des sessions:  
*Persistence des sessions:  
**Cookies !   
**Cookies !   
*Protection des échanges:  
*Protection des échanges:  
**SSL  
**SSL  
Ligne 116 : Ligne 120 :
**Jetons non rejouables   
**Jetons non rejouables   


La gestion des sessions se fait à deux niveaux :
La gestion des sessions se fait à deux niveaux :


*Avec le serveur d'authentification, ce qui évite de se réauthentifier à chaque fois  
*Avec le serveur d'authentification, ce qui évite de se réauthentifier à chaque fois  
Ligne 123 : Ligne 127 :
=== Aports du SSO ===
=== Aports du SSO ===


On y gagne en ergonomie : On ne saisit le mdp qu'une seule fois, à un seul endroit. Il faut donc sensibiliser l'utilisateur.
On y gagne en ergonomie : On ne saisit le mdp qu'une seule fois, à un seul endroit. Il faut donc sensibiliser l'utilisateur.


On y gagne en sécurité : On limite l'accès et la circulation des mots de passe, et cela permet aussi la création d'une politique des mots de passe. Enfin, on peut étendre les mode d'authentification.
On y gagne en sécurité : On limite l'accès et la circulation des mots de passe, et cela permet aussi la création d'une politique des mots de passe. Enfin, on peut étendre les mode d'authentification.


Pour les applications, on utilise les mêmes librairies d'authentification dans toutes les applications, ce qui permet de mieux les intégrer.
Pour les applications, on utilise les mêmes librairies d'authentification dans toutes les applications, ce qui permet de mieux les intégrer.


On a le choix, en matière de SSO : Pas de standardisation, et les besoins deviennent vite pressants. On a une multiplication des solutions, de tous types, plus ou moins sûres...
On a le choix, en matière de SSO : Pas de standardisation, et les besoins deviennent vite pressants. On a une multiplication des solutions, de tous types, plus ou moins sûres...


=== Single logout ===
=== Single logout ===
Ligne 148 : Ligne 152 :
*Indépendant des mécanismes d’authentification  
*Indépendant des mécanismes d’authentification  


Types d'assertions SAML :
Types d'assertions SAML :


*Authentification  
*Authentification  
Ligne 184 : Ligne 188 :
ET d'autres...
ET d'autres...


OpenID http://openid.net/
OpenID [http://openid.net/ http://openid.net/]


*Protocole de délégation d'authentification  
*Protocole de délégation d'authentification  
*Origine : authentification sur les blogs  
*Origine : authentification sur les blogs  
*Principe :  
*Principe :  
**1.Saisie de l’URI de son OpenID provider  
**1.Saisie de l’URI de son OpenID provider  
**2.Redirection vers l’OpenID provider  
**2.Redirection vers l’OpenID provider  
Ligne 196 : Ligne 200 :
*Nombreuses implémentations  
*Nombreuses implémentations  


Oauth http://oauth.net
Oauth [http://oauth.net http://oauth.net]


*Standard récent (version 1.0, décembre 2007)  
*Standard récent (version 1.0, décembre 2007)  
Ligne 206 : Ligne 210 :
== Apports de la fédération d'identités ==
== Apports de la fédération d'identités ==


Pour l’utilisateur :
Pour l’utilisateur :


*–Il n’utilise que le mot de passe de son SSO  
*–Il n’utilise que le mot de passe de son SSO  

Version du 31 mars 2019 à 13:06

Single Sign-On

Liens

Panorama de solutions : http://www.open-source-guide.com/Solutions/Developpement-et-couches-intermediaires/Authentification-federation-et-de-gestion-d-identite

Présentation

Le SSO consiste à centraliser les authentifications; on uniformise la sécurité de l'authentification, quelle que soit la plateforme. On peut ensuite appliquer une politique de mdp et gérer l'authentification via des protocoles normalisés et sécurisés (LDAP, Kerberos, CAS, RADIUS, etc). Le SSO est un début pour passer ensuite à l'authentification multi-facteurs. Les buts sont :

  • Amélioration de la sécurité
  • Simplifier l'utilisation
  • Faciliter les opérations pour les gestionnaires

AAA :

  • Authentification : Prouver son identité
  • Authorization : Qu'est-ce que j'ai le droit de faire
  • Accounting : Qu'est-ce que je fais

On a aussi une notion de single logout : je me peut me loguer et me déloguer de manière globale, ce qui est moins évident, parce que chaque application gère son authentification de façon globale. Il faut donc gérer une base centrale des applications qui ont une session d’authentification avec l’utilisateur et mémoriser une URL de déconnexion.–Le single logoutest complexe donc peu implémenté...

Technos utilisées

  • HTTP header : Pour les application proxifiées. On protège les apps, contrôle les urls, et on crée des variables multiples... (???) On a pas besoin de SLO.
    • RTENOTITLE
  • SAML (Security Assertion Markup Language) :standard informatique définissant un protocole pour échanger des informations liées à la sécurité. Basé sur le langage XML, SAML a été développé par OASIS. SAML propose l'authentification unique (en anglais single sign-on ou SSO) sur le web. De cette manière, un utilisateur peut naviguer sur plusieurs sites différents en ne s'authentifiant qu'une seule fois, sans pour autant que ces sites aient accès à des informations trop confidentielles. (wikipédia)
  • Authentification formulaire : Elle est utilisée par les applications sans SSO possible, ne permet pas de SLO, et lente et non recommandée. De plus, on doit stocker les mdp utilisateurs...
  • Il reste aussi CAS, OpenID, WS-federation...

LDAP

cf : Protocoles

Un annuraire LDAP contient de nombreuses informations relatives aux personnes : compte, mdp, etc; mais aussi aux structures. Il sert au contrôle d'accès (en donnant différents droits sur différents services). Un tas de services s'appuient sur LDAP, chez Windows comme chez Unix.

Recommandations

Recommandations nationales SUPANN (juin 2003), pour que les annuaires de la communauté 'Education Recherche' partagent un modèle identique:

  • assurer l'interopérabilité des différents annuaires (ENT),
  • faciliter la mise en place d'un méta-annuaire national

LDAP a une structure arborescente :

RTENOTITLE

Exemple d'une entrée 'personnel' :

dn: uid=declercq,ou=people,dc=univ-lille1,dc=fr
objectClass: inetOrgPerson (classe d'objet par défaut qui caractérise une personne)
  objectClass: supannPerson(recommandations SUPANN)
    objectClass: posixAccount (authentification type Unix)
      objectClass: sambaAccount (ouverture de session Windows)
        objectClass: ustlPerson (interne à l'établissement)
          objectClass: radiusProfile (authentification WiFi)
cn: Declercq Patricksn: Declercq
givenName: Patrick
uid: declercquser
Password:: {CRYPT}ZZZZZZZZZZZZZ
mail: Patrick.Declercq@univ-lille1.fr
telephoneNumber: + 33 3 20 43 44 26
supannCivilite: M.
supannAffectation: CRI – Centre de Ressources Informatiques
supannListeRouge: FALSE
  uidNumber: 6304
  gidNumber: 5000
    lmPassword: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    ntPassword: YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
      ustlDepartement: CRI
      ustlRole: Correspondant annuaire de l'USTL
        radiusGroupName: personnel

Les alimentations et les màj peuvent se faire par une base (de scolarité pour les étudiants...), cela permet un changement de mdp interactif, etc. Les personnels passent par Harpège, et par le bouton "mise à jour" de la page annuaire de l'université.
Données nominatives :

Authentification web, SSO, fédération d'identités

Il faut pouvoir gérer le contrôle d'accès aux applications web. Pour cela :

  • On veut restreindre l'accès à une partie du serveur à une population donnée

On peut identifier l'utilisateur par son IP (pas suffisant) et en l'authentifiant.

Apache et les modules d'auth

On peut étendre les fonctionnalités du serveur web Apache en ajoutant des modules :

  • mod_auth : utilisation des fichiers htpasswd et htgroup
  • mod_ssl : gestion SSL et authentification avec certificats
  • mod_authldap : authentification LDAP
  • mod_authZldap : authentification avec certificats puis autorisation basée sur LDAP
  • etc : http://modules.apache.org

Authentification et autorisation sont deux processus disjoints (cf. : le haut de la page)

Les briques d'un SSO

  • Le serveur d'authentification : c'est un élément central. Il authentifie l'utilisateur, assure la persistance de la connexion, propage l'identité vers les applications et se répose sur un ou des référentiels (LDAP, NIS...).
  • Les agents d'authentification : ils sont devant chaque ressource à protéger. Il servent d'interface entre le serveur et l'application : redirigent l'utilisateur vers le serveur d'authentification et transmettent sont identité vers l'application. Il peuvent être implémentés sous la forme de librairies clients ou de modules intégrés au serveur web.

Techniques utilisées

  • Pour la communication vers l'utilisateur distant :
    • Requêtes GET ou formulaires POST
    • Redirections
    • JS
  • Persistence des sessions:
    • Cookies !
  • Protection des échanges:
    • SSL
    • Portée et durée de validité des cookies
    • Jetons non rejouables

La gestion des sessions se fait à deux niveaux :

  • Avec le serveur d'authentification, ce qui évite de se réauthentifier à chaque fois
  • Avec l'agent, ce qui évite de renvoyer l'utilisateur vers le serveur à chaque requête.

Aports du SSO

On y gagne en ergonomie : On ne saisit le mdp qu'une seule fois, à un seul endroit. Il faut donc sensibiliser l'utilisateur.

On y gagne en sécurité : On limite l'accès et la circulation des mots de passe, et cela permet aussi la création d'une politique des mots de passe. Enfin, on peut étendre les mode d'authentification.

Pour les applications, on utilise les mêmes librairies d'authentification dans toutes les applications, ce qui permet de mieux les intégrer.

On a le choix, en matière de SSO : Pas de standardisation, et les besoins deviennent vite pressants. On a une multiplication des solutions, de tous types, plus ou moins sûres...

Single logout

Un utilisateur logué globalement doit pouvoir se déloguer globalement, ce qui est plus difficile que SSO à cause de la multiplication des sessions. Il faut donc gérer une base centrales des applications qui ont une session en cours. C'est une technique complexe et peu implémentée.

Ensuite...

On constate donc que les limites d'un service d'authentification apparaissent lorsque l'on veut ouvrir les portes à quelqu'un de l'éxtérieur. Comment reconnaître localement l'identité de quelqu'un qui vient de dehors?

Fédérations d'identités

SAML

  • SAML=Security Assertion Markup Language
  • Standard OASIS en 2002•Répond à un besoin d’interopérabilité
  • Echanges d’assertions de sécurité entre services
  • Indépendant des mécanismes d’authentification

Types d'assertions SAML :

  • Authentification
  • Échange d’attributs
  • Décisions d’autorisation

Liberty Alliance

  • Consortium d’industriels produisant des spécifications sur la gestion d’identités
  • S’appuie sur SAML
  • Implémenté dans de nombreux produits

Shibboleth

  • Norme et produit développé par Internet2
  • Open source
  • Première version en 200
  • •Basé sur SAML (bibliothèque OpenSAML
  • •Utilisé surtout par des universités
  • Conçu pour interconnecter les SSO des universités
  • Fonctionnalités
    • Délégation d’authentification
    • WAYF pour orienter l’utilisateur
    • Propagation des attributs utilisateur
    • Partage de méta données
    • Définition de règles de confiance

WS-Federation

  • Draft porté par Microsoft et IBM, 2003
  • Basée sur les spécifications WS-*
    • –WS-Security, WS-Trust, WS-Policy, WS-MetadataExchange
  • Définit l’échange d’identités et d’attributs entre domaines de sécurité

ET d'autres...

OpenID http://openid.net/

  • Protocole de délégation d'authentification
  • Origine : authentification sur les blogs
  • Principe :
    • 1.Saisie de l’URI de son OpenID provider
    • 2.Redirection vers l’OpenID provider
    • 3.Authentification
  • Développement rapide de la technologie
  • Nombreux services compatibles
  • Nombreuses implémentations

Oauth http://oauth.net

  • Standard récent (version 1.0, décembre 2007)
  • Définit un standard permettant la délégation d'un utilisateur pour l'accès à un service
  • Exemple d'utilisation
    • –Un utilisateur autorise un service d'impression à accéder à ses photos sur un site de gestion de photos
  • Oauth est complémentaire de OpenID

Apports de la fédération d'identités

Pour l’utilisateur :

  • –Il n’utilise que le mot de passe de son SSO
  • –Adapté aux utilisateurs nomades

Pour l’établissement de rattachement

  • –Niveau de sécurité constant (SSO)
  • –Meilleure maîtrise des données personnelle

Pour les gestionnaires de ressources

  • –Plus besoin de gérer des comptes utilisateurs
  • –Accès à des données utilisateurs fiables