- Le SSO c’est quoi ?
- L’AD c’est quoi ?
- SAML c’est quoi ?
- Comment on fait du SSO avec un compte Google ?
Le SSO c’est quoi ?
Le SSO (Single Sign-On) c’est le terme anglais pour “Authentification unique”. C’est une méthode pour permettre à un utilisateur d’accéder à plusieurs applications (sites web) en ne procédant qu’à une seule authentification. Par exemple le célèbre “Connect with Facebook” c’est du SSO.
L’AD c’est quoi ?
Souvent le sigle SSO vient avec un deuxième, “AD”, qui signifie Active Directory. L’Active Directory c’est un service Microsoft (donc environnement Windows) qui fournit des services centralisés d’identification. Concrètement c’est un annuaire des utilisateurs avec les informations basiques (type nom, prénom, mail) et possiblement des informations plus personnalisées (groupes auquels l’utilisateur appartient, langue préférée, …). L’AD peut servir de source à une connexion SSO. Ca veut dire qu’un utilisateur va utiliser ses accès de session Windows pour accéder à une autre application (site web)
SAML c’est quoi ?
Décidément on aime bien les acronymes… SAML (Security assertion markup language) c’est un protocole d’échange de données. En gros grâce à ce protocole et à des échanges de données sécurisées on va pouvoir utiliser son compte AD pour effectuer un SSO sur un site web. Voilà, c’est clair ?
Comment on fait du SSO avec un compte Google ?
Google permet d’utiliser son compte comme base de SSO (un “Google connect”).
- On fait la config de l’app Ruby, comme sur Hermès Multimétiers ou B2bylon (B2bylon va lire les infos sso dans la config de la brand, c’est plus fin. Hermès a la config en dur dans les initializers). Tout se joue avec la gem ‘omniauth-saml’ avec ‘devise’.
- Dans l’admin de google, partie “Applications/Applications SAML”, on définit une nouvelle app.
- URL ACS : https://url_du_site/users/auth/saml/callback
- ID d’entitié : https://url_du_site/users/auth/saml/metadata
- Pas besoin d’URL de démarrage.
- Le “Certificat” est à récupérer et à utiliser dans la config ‘omniauth-saml’.
- On décoche “Réponse signée”.
- On map l’identifiant du nom sur “Informations générales / Adresse e-mail principale”
- Format de l’ID du nom “UNSPECIFIED”
- Ensuite on peut mapper les attributs, pour envoyer par exemple le nom et le prénom.
- On peut aussi ajouter au compte google des infos custom, qu’on enverra ensuite via cette appli (cf https://support.google.com/cloudidentity/answer/6208725?hl=fr&ref_topic=7558948)
- Ne pas oublier d’“activer pour tout le monde” l’appli qu’on vient de créer
- Côté app on paramètre
- URL d’authentification (= l’url appelée pour demander le login/mdp google) : elle est fournie par Google lorsqu’on crée l’appli (du type https://accounts.google.com/o/saml2/idp?idpid=XXXXX)
- Le certificat est à récupérer côté Google et à paramétrer dans l’app. Il permet de coder/décoder les réponses fournies.
- Ensuite on précise le format de l’ID du nom (urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified pour matcher la config qu’on a fait côté Google)
- Et enfin on map les attributs.