# Authentification unique (SSO)

Connectez RandomCoffee à votre fournisseur d'identité SAML (Okta, Microsoft Entra ID ou OneLogin) pour que votre équipe se connecte avec un seul jeu d'identifiants.

import { Steps, TabItem, Tabs } from '@prosefly/astro-components';
import Callout from '@components/Callout.astro';

L'authentification unique (SSO) permet à votre équipe d'utiliser un seul jeu d'identifiants, géré par votre fournisseur d'identité, pour accéder à RandomCoffee et à vos autres applications. RandomCoffee prend en charge le SSO en SAML 2.0.

<Callout type="note">
  Le SSO est disponible avec le plan Enterprise.
</Callout>

Cet article décrit la configuration avec Okta, Microsoft Entra ID (anciennement Azure AD) et OneLogin. La partie RandomCoffee est la même pour tous les fournisseurs : seule la configuration dans votre fournisseur d'identité change.

## Ce que RandomCoffee attend

| Élément SAML | Valeur attendue |
| --- | --- |
| Name ID | L'adresse email de l'utilisateur (format `EmailAddress`). RandomCoffee identifie les utilisateurs par cet email. |
| Attribut `first_name` | Le prénom de l'utilisateur |
| Attribut `last_name` | Le nom de l'utilisateur |

Les noms d'attributs doivent être exactement `first_name` et `last_name`, en minuscules avec un tiret bas.

<Callout type="warning">
  Une fois le SSO enregistré, tous les membres de votre espace de travail, vous compris, doivent se connecter via votre fournisseur d'identité pour ouvrir RandomCoffee. Assignez-vous à l'application RandomCoffee dans votre fournisseur d'identité avant d'enregistrer la configuration.
</Callout>

## Étape 1 : récupérer les informations RandomCoffee

<Steps>

1. **Ouvrez les réglages SSO.**

   Dans RandomCoffee, allez dans "Paramètres" > "Configuration" et cliquez sur la carte "Single Sign-On (SSO)". Vous pouvez aussi ouvrir `https://app.random-coffee.com/account/<your-workspace>/admin/settings/integrations/sso`, où `<your-workspace>` est le nom de votre espace de travail tel qu'il apparaît dans votre adresse RandomCoffee.

2. **Ouvrez l'onglet "Fournisseur de service (RandomCoffee)".**

   Il liste les informations à saisir dans votre fournisseur d'identité :

   | Champ | Ce que c'est |
   | --- | --- |
   | "RelayState" | Identifie votre espace de travail quand un utilisateur lance la connexion depuis le portail du fournisseur d'identité. |
   | "ID de l'entité" | L'émetteur des requêtes SAML envoyées par RandomCoffee, et le destinataire attendu des réponses SAML. |
   | "URL de connexion" | Une adresse raccourcie qui lance la connexion depuis RandomCoffee. |
   | "URL ACS" | L'adresse de l'Assertion Consumer Service, où votre fournisseur d'identité envoie l'assertion SAML. |
   | "Certificat d'encryption" | Le certificat de clé publique qui sert à chiffrer l'assertion SAML. Cliquez sur "Télécharger en tant que fichier" pour l'enregistrer. |

   Gardez cet onglet ouvert : vous copiez ces valeurs à l'étape suivante.

</Steps>

Quel que soit votre fournisseur, les champs correspondent ainsi :

| Champ RandomCoffee | Okta | Microsoft Entra ID | OneLogin |
| --- | --- | --- | --- |
| "ID de l'entité" | Audience URI (SP Entity ID) | Identifier (Entity ID) | Audience (EntityID) |
| "URL ACS" | Single sign on URL | Reply URL (Assertion Consumer Service URL) | Recipient, et ACS (Consumer) URL |
| "URL de connexion" | Inutile | Sign on URL | Login URL |
| "RelayState" | Default RelayState | Relay State | Inutile dans les étapes ci-dessous |

<Callout type="note">
  RandomCoffee a besoin du RelayState pour savoir à quel espace de travail correspond une connexion. Si vos utilisateurs ouvrent RandomCoffee depuis le portail de votre fournisseur d'identité, saisissez la valeur "RelayState" dans le champ de relay state par défaut de votre fournisseur.
</Callout>

## Étape 2 : configurer votre fournisseur d'identité

Choisissez votre fournisseur d'identité ci-dessous.

<Tabs syncKey="idp">
<TabItem label="Okta" value="okta">

<Steps>

1. **Créez l'application.**

   Dans Okta, cliquez sur "Admin" pour ouvrir le tableau de bord d'administration, puis sur "Add Applications" et "Create New App". Choisissez "Web" comme plateforme et "SAML 2.0" comme méthode de connexion, puis cliquez sur "Create".

2. **Nommez l'application.**

   Dans "General Settings", saisissez un nom d'application (par exemple « RandomCoffee »), puis cliquez sur "Next".

3. **Saisissez les réglages SAML.**

   Dans "Configure SAML", section "SAML Settings", saisissez les informations RandomCoffee :

   | Champ Okta | Valeur |
   | --- | --- |
   | Single sign on URL | L'"URL ACS" de RandomCoffee |
   | Audience URI (SP Entity ID) | L'"ID de l'entité" de RandomCoffee |
   | Default RelayState | Le "RelayState" de RandomCoffee |
   | Name ID format | `EmailAddress` |
   | Application username | L'adresse email de l'utilisateur |

4. **Réglez les paramètres avancés.**

   Cliquez sur "Show Advanced Settings" et vérifiez que les options correspondent à ces valeurs :

   | Option | Valeur |
   | --- | --- |
   | Response | Signed |
   | Assertion Signature | Signed |
   | Signature Algorithm | RSA-SHA256 |
   | Digest Algorithm | SHA256 |
   | Assertion Encryption | Encrypted |
   | Encryption Algorithm | AES128-CBC |
   | Key Transport Algorithm | RSA-1.5 |
   | Encryption Certificate | Chargez le fichier téléchargé avec "Télécharger en tant que fichier" dans RandomCoffee |
   | Enable Single Logout | Décoché |
   | Authentication context class | PasswordProtectedTransport |
   | Honor Force Authentication | Yes |

5. **Ajoutez les attributs.**

   Descendez jusqu'à "Attribute Statements" et ajoutez ces paires nom et valeur :

   | Nom | Valeur |
   | --- | --- |
   | `first_name` | `user.firstName` |
   | `last_name` | `user.lastName` |

   Puis cliquez sur "Next".

6. **Terminez l'application.**

   Dans "Feedback", sélectionnez "I'm an Okta customer adding an internal app", cochez "This is an internal app that we have created", puis cliquez sur "Finish".

7. **Copiez les informations du fournisseur d'identité.**

   Allez dans l'onglet "Sign On" et cliquez sur "View Setup Instructions". Copiez l'"Identity Provider Single Sign-On URL", l'"Identity Provider Issuer" et le "X.509 Certificate" : vous les saisissez dans RandomCoffee à l'étape 3 ci-dessous.

</Steps>

</TabItem>
<TabItem label="Microsoft Entra ID" value="entra">

<Steps>

1. **Créez l'application.**

   Dans le portail Azure, allez dans Microsoft Entra ID (anciennement Azure Active Directory) > "Enterprise applications" et cliquez sur "New application". Cliquez sur "Create your own application", saisissez un nom (par exemple « RandomCoffee ») et choisissez "Integrate any other application you don't find in the gallery (Non-gallery)".

   ![Le panneau Create your own application, avec le nom de l'application et l'option Non-gallery sélectionnée](../../../../../assets/articles/sso/entra-create-your-own-application.png)

2. **Ouvrez la configuration SSO.**

   Sur la page de présentation de l'application, cliquez sur "Set up single sign-on", puis choisissez SAML.

3. **Remplissez la Basic SAML Configuration.**

   Dans la section 1, "Basic SAML Configuration", cliquez sur "Edit" et copiez les valeurs de l'onglet "Fournisseur de service (RandomCoffee)" :

   | Champ Entra ID | Valeur |
   | --- | --- |
   | Identifier (Entity ID) | L'"ID de l'entité" de RandomCoffee |
   | Reply URL (Assertion Consumer Service URL) | L'"URL ACS" de RandomCoffee |
   | Sign on URL | L'"URL de connexion" de RandomCoffee |
   | Relay State | Le "RelayState" de RandomCoffee |

   Cliquez sur "Save".

4. **Modifiez la revendication obligatoire.**

   Dans la section 2, "Attributes & Claims", cliquez sur "Edit", puis sur la revendication obligatoire "Unique User Identifier (Name ID)". Réglez "Source attribute" sur `user.mail` et vérifiez que "Name identifier format" est "Email address". Cliquez sur "Save".

5. **Modifiez les revendications supplémentaires.**

   Cliquez sur chaque revendication supplémentaire et renommez-la ainsi, puis enregistrez :

   | Valeur | Nom de la revendication |
   | --- | --- |
   | `user.mail` | `email` |
   | `user.givenname` | `first_name` |
   | `user.surname` | `last_name` |
   | `user.userprincipalname` | Supprimez cette revendication |

   Par exemple, pour `user.mail`, saisissez `email` dans "Name", gardez le namespace et la source "Attribute", et vérifiez que "Source attribute" vaut `user.mail`.

   ![La page SAML-based Sign-on une fois configurée, avec les revendications email, first_name et last_name et la section SAML Signing Certificate](../../../../../assets/articles/sso/entra-saml-configuration-done.jpg)

6. **Téléchargez le fichier de métadonnées.**

   Dans la section 3, "SAML Signing Certificate", téléchargez le fichier "Federation Metadata XML" : vous le chargez dans RandomCoffee à l'étape 3 ci-dessous.

7. **Assignez les utilisateurs.**

   Dans le menu de l'application, cliquez sur "Users and groups" et assignez les utilisateurs ou les groupes qui peuvent se connecter à RandomCoffee.

</Steps>

</TabItem>
<TabItem label="OneLogin" value="onelogin">

<Steps>

1. **Ajoutez l'application.**

   Dans OneLogin, allez dans "Applications" > "Applications" et cliquez sur "Add App".

2. **Choisissez le connecteur SAML.**

   Recherchez "SAML Custom Connector (Advanced)" et sélectionnez-le.

3. **Nommez l'application.**

   Saisissez un "Display Name" (par exemple « RandomCoffee ») et cliquez sur "Save".

4. **Saisissez les informations RandomCoffee.**

   Ouvrez l'onglet "Configuration" et remplissez les champs avec les valeurs de l'onglet "Fournisseur de service (RandomCoffee)" :

   | Champ OneLogin | Valeur |
   | --- | --- |
   | Audience (EntityID) | L'"ID de l'entité" de RandomCoffee |
   | Recipient | L'"URL ACS" de RandomCoffee |
   | ACS (Consumer) URL Validator | `^https:\/\/app.random-coffee.com\/` |
   | ACS (Consumer) URL | L'"URL ACS" de RandomCoffee |
   | Login URL | L'"URL de connexion" de RandomCoffee |

   ![L'onglet Configuration de OneLogin, avec les champs Recipient, ACS (Consumer) URL Validator, ACS (Consumer) URL et Login URL remplis](../../../../../assets/articles/sso/onelogin-configuration-tab.jpg)

   Cliquez sur "Save".

5. **Ajoutez les attributs de nom.**

   Ouvrez l'onglet "Parameters". Vérifiez que "NameID value" vaut "Email". Cliquez sur le bouton "+" et ajoutez un champ nommé `first_name`, avec "Include in SAML assertion" coché, puis cliquez sur "Save". Choisissez la valeur "First Name" et enregistrez.

   Faites de même pour `last_name`, avec la valeur "Last Name".

   ![L'onglet Parameters de OneLogin, avec NameID value réglé sur Email, first_name sur First Name et last_name sur Last Name](../../../../../assets/articles/sso/onelogin-parameters.jpg)

6. **Téléchargez le fichier de métadonnées.**

   Ouvrez l'onglet "SSO" et copiez l'"Issuer URL". Collez-la dans votre navigateur : elle télécharge le fichier de métadonnées. Vous le chargez dans RandomCoffee à l'étape 3 ci-dessous.

</Steps>

</TabItem>
</Tabs>

## Étape 3 : saisir les informations de votre fournisseur d'identité dans RandomCoffee

<Steps>

1. **Ouvrez l'onglet "Fournisseur d'identité".**

   De retour dans les réglages SSO de RandomCoffee, ouvrez l'onglet "Fournisseur d'identité".

2. **Ajoutez les informations du fournisseur d'identité.**

   Chargez le fichier de métadonnées de votre fournisseur dans "Fichier metadata du fournisseur identité" avec "Charger un fichier". Les champs "URL SSO du fournisseur", "Fournisseur d'identité" (l'émetteur) et "Certificat X.509" se remplissent automatiquement.

   Si vous n'avez pas de fichier de métadonnées (par exemple avec Okta), collez dans ces champs les trois valeurs copiées depuis votre fournisseur.

3. **Réglez le bouton de connexion et les domaines.**

   - "Nom à afficher" : le nom de votre fournisseur (par exemple « Okta »). La page de connexion de RandomCoffee affiche un bouton "Connexion avec" suivi de ce nom.
   - "Domaines IdP" : les domaines email de vos utilisateurs, séparés par des virgules (par exemple `example1.com, example2.com`). Les utilisateurs dont l'email est sur l'un de ces domaines peuvent se connecter en SSO. Indiquez tous les domaines utilisés par vos membres : une connexion lancée depuis la page de connexion de RandomCoffee avec un email sur un autre domaine est refusée.

4. **Choisissez de créer les comptes automatiquement ou non.**

   Cochez "Ajouter automatiquement des nouveaux utilisateurs en utilisant cette méthode d'authentification pour mon équipe" si les personnes qui ne sont pas encore membres de RandomCoffee doivent être ajoutées à votre espace de travail lors de leur première connexion en SSO. Si vous ne cochez pas la case, seuls les membres existants peuvent accéder à votre espace de travail en SSO.

5. **Enregistrez.**

   Cliquez sur "Sauver l'authentification".

</Steps>

Pour supprimer la configuration plus tard, ouvrez le même onglet et cliquez sur "Supprimer".

## Étape 4 : tester la connexion

Vérifiez que les personnes qui ont besoin de RandomCoffee sont assignées à l'application dans votre fournisseur d'identité. Puis testez avec votre propre compte :

- Depuis RandomCoffee : allez sur la [page de connexion](https://app.random-coffee.com/login/) et saisissez votre adresse email. Un bouton "Connexion avec" suivi du nom à afficher apparaît : cliquez dessus et connectez-vous avec votre fournisseur d'identité.
- Depuis votre fournisseur d'identité : ouvrez RandomCoffee depuis le portail de votre fournisseur. Cela nécessite le "RelayState" dans la configuration de votre fournisseur.

<Callout type="note">
  Les utilisateurs doivent se connecter à leur fournisseur d'identité avec la même adresse email que celle saisie sur la page de connexion de RandomCoffee.
</Callout>

Quand le SSO est actif, la [règle de réinitialisation du mot de passe](/fr/documentation/security/password-policy/) ne s'applique pas : les mots de passe sont gérés par votre fournisseur d'identité.

Pour toute question, contactez [support@random-coffee.com](mailto:support@random-coffee.com).
