France connect » Historique » Version 12
Bruno Boiget, 23/03/2016 10:40
| 1 | 3 | Bruno Boiget | h1. Documentation (brouillon) pour l'authentification France connect |
|---|---|---|---|
| 2 | 1 | Bruno Boiget | |
| 3 | 1 | Bruno Boiget | h2. Principes généraux |
| 4 | 1 | Bruno Boiget | |
| 5 | 1 | Bruno Boiget | Des modifications ont été apportées à EoleSSO pour permettre d'authentifier les utilisateurs avec le portail France Connect. |
| 6 | 1 | Bruno Boiget | Il est également possible de configurer d'autres fournisseurs d'identité OpenID Connect dans les limites des fontionnalités implémentées (testé à ce jour avec France Connect et Google) |
| 7 | 1 | Bruno Boiget | |
| 8 | 1 | Bruno Boiget | Le principe de fonctionnement est le suivant : |
| 9 | 1 | Bruno Boiget | |
| 10 | 1 | Bruno Boiget | * L'utilisateur se connnecte à une application protégér par EoleSSO et est redirigé sur la page d'authentification |
| 11 | 1 | Bruno Boiget | * la page de login d'EoleSSO propose un bouton pour chaque fournisseur d'identité configuré; |
| 12 | 1 | Bruno Boiget | * lorsqu'un utilisateur clique sur un de ces boutons, il est redirigé vers le portail de connexion du fournisseur correpondant; |
| 13 | 1 | Bruno Boiget | * après authentification, il est renvoyé sur le portail EoleSSO. Deux cas sont possibles : |
| 14 | 1 | Bruno Boiget | ** lors de la première connexion avec ce fournisseur, EoleSSO demande à l'utilisateur de renseigner son login/mot de passe habituel, et l'associe à l'identifiant retourné par le fournisseur; |
| 15 | 1 | Bruno Boiget | ** si l'association a déjà été faite, EoleSSO va automatiquement retrouver le compte associé, et créer la session de l'utilisateur; |
| 16 | 1 | Bruno Boiget | * l'utilisateur est ensuite redirigé vers l'application à laquelle il voulait accéder. |
| 17 | 1 | Bruno Boiget | |
| 18 | 1 | Bruno Boiget | h2. prérequis à la mise en oeuvre |
| 19 | 1 | Bruno Boiget | |
| 20 | 1 | Bruno Boiget | Le protocole OpenID Connect repose sur un principe de confiance entre le fournisseur de service (Relying Party, dans notre cas le serveur EoleSSO) et un fournisseur d'identité (OpenID Provider, par exemple France Connect). |
| 21 | 1 | Bruno Boiget | |
| 22 | 1 | Bruno Boiget | Pour mettre en place cette relation de confiance, le fournisseur de service va faire une demande d'enregistrement auprès du fournisseur d'identité. celui-ci lui enverra alors un n° de client et une clé secrète. |
| 23 | 1 | Bruno Boiget | Le fournisseur d'identité doit également fournir un certain nombre d'URLs nécessaires à la configuration du client (un principe de configuration automatique est prévu par le protocole, mais il est rarement utilisé dans la pratique, et n'a pas été implémenté pour l'instant). |
| 24 | 1 | Bruno Boiget | |
| 25 | 1 | Bruno Boiget | Les modalités de cet échange d'informations sont spécifiques à chaque fournisseur (voir les exemples plus loin). |
| 26 | 1 | Bruno Boiget | |
| 27 | 9 | Bruno Boiget | Dans la plupart des cas, il sera demandé : |
| 28 | 9 | Bruno Boiget | |
| 29 | 11 | Bruno Boiget | * une adresse dite de *callback* : c'est l'adresse sur laquelle renvoyée l'utilisateur après authentification. Dans le cas d'EoleSSO : *<pre>https://<adresse_serveur_eolesso>:8443/oidcallback</pre>* |
| 30 | 9 | Bruno Boiget | * une adresse mail de contact |
| 31 | 9 | Bruno Boiget | * Un logo représentant le fournisseur de service (logo Eole, de l'académie, ...). |
| 32 | 9 | Bruno Boiget | |
| 33 | 1 | Bruno Boiget | h2. variables de configuration |
| 34 | 1 | Bruno Boiget | |
| 35 | 1 | Bruno Boiget | Une fois en possession des informations nécessaires, vous pouvez configurer le service eole-sso de la façon suivante (onglet eole-sso de l'interface gen_config) |
| 36 | 1 | Bruno Boiget | |
| 37 | 2 | Bruno Boiget | * passer la variable *Autoriser l'authentification OpenID* à *oui* |
| 38 | 2 | Bruno Boiget | * Ajouter un fournisseur en cliquant sur le bouton *+Référence du fournisseur d'identité OpenID* |
| 39 | 2 | Bruno Boiget | * renseigner un libellé pour identifier le fournisseur. Ce libellé est interne à l'application EoleSSO. Il est en particulier utilisé pour définir le nom des fichiers contenant les logos/boutons du fournisseur : |
| 40 | 2 | Bruno Boiget | ** /usr/share/sso/interface/images/<libelle>.png : bouton de connexion présenté sur la page de login (par exemple 'se connecter avec France Connect') |
| 41 | 2 | Bruno Boiget | ** /usr/share/sso/interface/images/logo-<libelle>.png : logo du fournisseur qui sera affiché sur la page d'association de comptes. |
| 42 | 2 | Bruno Boiget | |
| 43 | 2 | Bruno Boiget | * Renseigner ensuite les informations suivantes concernant le fournisseur : |
| 44 | 2 | Bruno Boiget | |
| 45 | 2 | Bruno Boiget | * *Libellé du provider d'authentification OpenID* : libellé à destination des utilisateurs pour décrire le fournisseur ("France Connect", "Google", ...) |
| 46 | 2 | Bruno Boiget | ** URL d'accès (*issuer*) : URL décrivant le fournisseur d'identité (la plupart du temps, l'URL de base de son service d'authentification) |
| 47 | 2 | Bruno Boiget | ** URL de demande d'autorisation (*authorization endpoint*) : URL permettant au client d'initier le processus d'authentification |
| 48 | 2 | Bruno Boiget | ** URL de récupération de jeton d'accès (*token endpoint*) : URL permettant de récupérer un jeton (éventuellement l'identifiant de l'utilisateur) après authentification |
| 49 | 2 | Bruno Boiget | ** URL de déconnexion (*logout endpoint*) : URL permettant de demander une déconnexion (si disponible) |
| 50 | 2 | Bruno Boiget | ** URL de lecture des informations (*userinfo endpoint*) : URL permettant de récupérer les informations de l'utilisateur à l'aide du jeton fourni |
| 51 | 2 | Bruno Boiget | ** URL de description des certificats de signature (*jwks URI*) : URL décrivant les certificats utilisés par le fournisseur (si disponible) |
| 52 | 8 | Bruno Boiget | ** *Client ID* : identifiant client fourni par le fournisseur lors de l'échange préalable |
| 53 | 8 | Bruno Boiget | ** *Client secret* : clé secrète fournie par le fournisseur lors de l'échange préalable |
| 54 | 2 | Bruno Boiget | |
| 55 | 2 | Bruno Boiget | notes: La cinématique de déconnexion (single logout) n'est pas implémentée par tous les fournisseurs. Une cinématique spécifique a été mise en oeuvre dans le cas de certains acteurs connus. à ce jour, Google (testé) et Facebook / Microsoft (non testé). le paramètre *URL de déconnexion* sera donc ignoré pour ceux-ci. |
| 56 | 1 | Bruno Boiget | |
| 57 | 1 | Bruno Boiget | h2. exemples de configuration |
| 58 | 1 | Bruno Boiget | |
| 59 | 1 | Bruno Boiget | h3. France Connect |
| 60 | 1 | Bruno Boiget | |
| 61 | 4 | Bruno Boiget | Une configuration prédéfinie est fournie pour France Connect. Pour l'activer, choisissez *fconnect* dans la liste déroulante de la variable *Référence du provider d'authentification OpenID*. |
| 62 | 4 | Bruno Boiget | |
| 63 | 4 | Bruno Boiget | Les seuls données à renseigner sont *Client ID* et *Client secret* |
| 64 | 4 | Bruno Boiget | |
| 65 | 4 | Bruno Boiget | Pour obtenir ces identifiants, s'inscrire en tant que fournisseur de service à cette adresse : https://doc.integ01.dev-franceconnect.fr/inscription (environnement de test) |
| 66 | 4 | Bruno Boiget | |
| 67 | 4 | Bruno Boiget | Il vous sera demandé les informations suivantes: |
| 68 | 4 | Bruno Boiget | * Nom du service |
| 69 | 4 | Bruno Boiget | * Email de contact |
| 70 | 4 | Bruno Boiget | * Logo du service (apparaîtra sur la page d'authentification de France Connect) |
| 71 | 4 | Bruno Boiget | * Urls de callback : adresse sur laquelle renvoyer après authentification de l'utilisateur (voir plus haut) |
| 72 | 4 | Bruno Boiget | |
| 73 | 4 | Bruno Boiget | Les logos et bouton de connexion France Connect sont déjà fournis avec EoleSSO. |
| 74 | 4 | Bruno Boiget | |
| 75 | 4 | Bruno Boiget | Pour plus d'informations sur le fonctionnement et la configuration, se reporter à cette page : https://integ01.dev-franceconnect.fr/fournisseur-service |
| 76 | 4 | Bruno Boiget | |
| 77 | 1 | Bruno Boiget | h3. Google |
| 78 | 1 | Bruno Boiget | |
| 79 | 7 | Bruno Boiget | La mise en oeuvre de l'authentification des utilisateurs avec les services de Google a également été testée. |
| 80 | 5 | Bruno Boiget | |
| 81 | 5 | Bruno Boiget | Pour récupérer votre Client ID / Client Secret, vous devez créer un compte développeur depuis cette adresse : https://developers.google.com/ |
| 82 | 5 | Bruno Boiget | |
| 83 | 5 | Bruno Boiget | Rendez-vous ensuite dans la console développeur de Google afin de déclarer votre service EoleSSO comme application : https://console.developers.google.com |
| 84 | 5 | Bruno Boiget | |
| 85 | 12 | Bruno Boiget | * Créez un nouveau projet (barre supérieure de la console -> *select a project* -> *create a project*) |
| 86 | 12 | Bruno Boiget | * Une fois le projet créé, cliquez sur la barre de menu gauche (3 barres horizontales), puis sur *API Manager*. Cliquez ensuite sur *Credentials* (à gauche) |
| 87 | 12 | Bruno Boiget | * Cliquer sur *Oauth Consent Screen* et renseigner au minimum le champ *Product name shown to users* (par exemple 'établissement xxx') |
| 88 | 12 | Bruno Boiget | * Sauvegarder et dans Credentias, cliquer sur *Create credentials*, *Oauth Client ID" |
| 89 | 12 | Bruno Boiget | * Choisir *Web application* et renseigner les champs suivants : |
| 90 | 12 | Bruno Boiget | ** Name : au choix |
| 91 | 12 | Bruno Boiget | ** Authorized JavaScript origins : https://<adresse_serveur_sso>:8443 |
| 92 | 12 | Bruno Boiget | ** Authorized redirect URIs : https://<adresse_serveur_sso>:8443/oidcallback |
| 93 | 12 | Bruno Boiget | * Cliquer sur *Create* et recopier l'identifiant et la clé secrète fournis |
| 94 | 1 | Bruno Boiget | |
| 95 | 12 | Bruno Boiget | Une fois les identifiants récupérés, vous pouvez configurer les paramètres d'EoleSSO (gen_config, onglet Eole SSO en mode expert) |
| 96 | 5 | Bruno Boiget | |
| 97 | 12 | Bruno Boiget | * Passer à *oui* la variable *Autoriser l'authentification OpenID* |
| 98 | 12 | Bruno Boiget | * ajouter un forunisseur en cliquant sur *+Référence du provider d'authentification OpenID* |
| 99 | 12 | Bruno Boiget | * *Référence du provider d'authentification OpenID* : google (des logos sont présents et utilisés automatiquement en choisissant ce libellé) |
| 100 | 12 | Bruno Boiget | * *Libellé du provider d'authentification OpenID* : Google (ou autre description de votre choix) |
| 101 | 1 | Bruno Boiget | * *issuer*: https://accounts.google.com |
| 102 | 5 | Bruno Boiget | * *authorization_endpoint*: https://accounts.google.com/o/oauth2/v2/auth |
| 103 | 5 | Bruno Boiget | * *token_endpoint*: https://www.googleapis.com/oauth2/v4/token |
| 104 | 5 | Bruno Boiget | * *userinfo_endpoint*: https://www.googleapis.com/oauth2/v3/userinfo |
| 105 | 5 | Bruno Boiget | * *jwks_uri*: https://www.googleapis.com/oauth2/v3/certs |
| 106 | 5 | Bruno Boiget | |
| 107 | 12 | Bruno Boiget | En cas de problème, les paramètres en cours de validité sont décrits ici : https://accounts.google.com/.well-known/openid-configuration |
| 108 | 1 | Bruno Boiget | |
| 109 | 12 | Bruno Boiget | Pour plus d'informations sur le support d'OpenID chez Google : https://developers.google.com/identity/protocols/OpenIDConnect |
| 110 | 1 | Bruno Boiget | |
| 111 | 1 | Bruno Boiget | h3. autres |