Connexion unique (SSO)
Avec la connexion unique pour Cloud Directory, vous pouvez offrir une expérience d'authentification fluide entre plusieurs applications Web. Si la connexion unique est activée lorsqu'un utilisateur se connecte pour la première fois, il n'aura pas à entrer de nouveau ses données d'identification à sa prochaine connexion. Les utilisateurs sont automatiquement connectés à toutes les applications protégées par la même instance App ID.
App ID fournit la connexion unique (SSO) pour les utilisateurs Cloud Directory. Si vous utilisez un fournisseur d'identité sociale ou fédérée SAML, le SSO est géré par ce fournisseur et App ID le respecte.
Fonctionnement
Examinez le diagramme suivant pour voir comment fonctionne la connexion unique.
- Un utilisateur Cloud Directory se connecte à votre application pour la première fois.
- Il est invité à s'authentifier en fournissant un nom d'utilisateur ou une adresse électronique et un mot de passe.
- Si les données d'identification sont valides, l'utilisateur est connecté à votre application. En parallèle, App ID crée une session et définit un cookie sur le navigateur de l'utilisateur.
- Si un utilisateur tente de se connecter à l'une de vos autres applications, App ID détecte le cookie de session et signe automatiquement l'utilisateur dans votre application. Les cookies de session App ID sont spécifiques à l'instance et sont signés par la clé privée unique de l'instance.
Actuellement, la connexion unique (SSO) Cloud Directory est configurée pour fonctionner lorsque Cloud Directory est le seul fournisseur d'identité activé. Si votre instance d'App ID est configurée pour utiliser plusieurs fournisseurs d'identité, l'activation de SSO n'a aucun effet sur le flux de connexion. Les utilisateurs sont invités à entrer leurs données d'identification Cloud Directory ou à sélectionner l'un des autres fournisseurs à chaque connexion.
Configuration de la connexion unique
Vous pouvez configurer la connexion unique à l'aide du tableau de bord App ID ou des API.
Avec l'interface graphique
Vous pouvez configurer la connexion unique via l'interface graphique.
-
Accédez à l'onglet Cloud Directory > Connexion unique du tableau de bord App ID.
-
Faites basculer Activer la connexion unique sur Activé.
-
Définissez la durée d'inaction dont dispose un utilisateur avant expiration de la session de connexion unique. Lorsqu'elle expire, l'utilisateur doit se reconnecter. La durée est indiquée en minutes et le temps d'inactivité maximum autorisé est de 10 080 minutes (soit 7 jours). La durée par défaut est de 1440 minutes, ce qui équivaut à 1 jour.
-
Ajoutez vos URI de redirection dans la zone URI de redirection après déconnexion, puis cliquez sur le signe +. Veillez à n'enregistrer que des applications en lesquelles vous avez confiance. En enregistrant l'URI, vous autorisez App ID à l'inclure dans le flux de travaux d'autorisation.
-
Cliquez sur Sauvegarder.
Avec l'API
Vous pouvez activer la fonction en utilisant l'API d'administration de la configuration SSO pour définir trois paramètres.
Exemple d'appel :
{
"isActive": true,
"inactivityTimeoutSeconds": 86400,
"logoutRedirectUris": [
"http://my-first-app.com/after_logout",
"http://my-second-app.com/after_logout"
]
}
| Paramètre | Définition |
|---|---|
isActive |
Pour activer la connexion unique, définissez cette valeur sur true. Le paramétrage par défaut est false. |
inactivityTimeoutSeconds |
Durée maximale d'inactivité de l'utilisateur avant que celui-ci soit obligé d'entrer de nouveau ses données d'identification. Cette valeur est indiquée en secondes avec un maximum de 604800 seconds (7 jours). Le paramétrage
par défaut est 86400 seconds (1 jour). |
logoutRedirectUris |
Liste des URI autorisés, séparés par des virgules, vers lesquels App ID peut rediriger vos utilisateurs une fois qu'ils sont déconnectés. |
Configuration de la déconnexion
Avec App ID, vous pouvez mettre fin à la session de connexion unique d'un utilisateur pour son navigateur actuel. Si l'accès au noeud final d'API s'effectue via le navigateur de l'utilisateur, la session de cet utilisateur est interrompue et l'utilisateur est invité à entrer ses données d'identification lors de sa prochaine tentative de connexion dans ce navigateur (et ce, quelle que soit votre application).
Lorsque l'un des flux liés à la modification, à la réinitialisation ou au renouvellement d'un mot de passe est démarré, les sessions de tous les clients sont automatiquement arrêtées pour l'utilisateur.
Avec l'API
Pour déconnecter un utilisateur, redirigez son navigateur en utilisant vos informations pour effectuer l'appel d'API suivant.
https://<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>/cloud_directory/sso/logout?redirect_uri=<redirectURI>&client_id=<clientID>
| Variable | Valeur |
|---|---|
region |
Région dans laquelle votre instance App ID est mise à disposition. Reportez-vous à cette section sur les régions disponibles. |
tenantID |
Identificateur unique de votre instance App ID. Vous trouverez cette valeur dans l'onglet Service Credentials du tableau de bord App ID. Si vous ne disposez pas d'un ensemble de données d'identification du service, vous pouvez en créer un et en extraire la valeur. |
redirectURI |
URI indiqué dans votre configuration de connexion unique via le tableau de bord App ID. Pour des raisons de sécurité, si vous n'indiquez pas de valeur, la redirection ne peut pas s'effectuer et une erreur est signalée. |
clientID |
ID client de votre application. |
Même si la session de connexion unique est interrompue, un utilisateur qui dispose d'un jeton d'accès valide stocké dans sa session peut ne pas avoir à entrer de nouveau ses données d'identification tant que son jeton n'a pas expiré. Par défaut, le jeton expire au bout d'1 heure.
Accès avec le logiciel SDK serveur Node.JS
Vous pouvez également utiliser le logiciel SDK serveur Node.js App ID pour gérer automatiquement la redirection.
-
Définissez
logoutSSOcomme méthode. Exemple :let webAppStrategy = new WebAppStrategy(.....); .... webAppStrategy.logoutSSO(); -
Configurez la déconnexion.
app.get('/logoutSSO', (req, res) => { res.clearCookie("refreshToken"); webAppStrategy.logoutSSO(req,res, { "redirect_uri": "https://my-app.com/after_logout" }); });
Fin de toutes les sessions d'un utilisateur
En tant qu'administrateur, vous pouvez mettre fin à toutes les sessions de connexion unique de n'importe quel utilisateur à l'aide des API admin d'App ID. Les API sont protégées par un jeton IAM de cloud.
Exemple de demande d'API :
POST https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/Users/<userID>/sso/logout
Headers:
Authorization: Bearer <IAMToken>
Content-Type: application/json
| Variable | Valeur |
|---|---|
Content-Type |
Le type de contenu de votre demande. La valeur acceptée est application/json. |
region |
Région dans laquelle votre instance App ID est mise à disposition. Reportez-vous à cette section sur les régions disponibles. |
tenantID |
Identificateur unique de votre instance App ID. Vous trouverez cette valeur dans l'onglet Service Credentials du tableau de bord App ID. Si vous ne disposez pas d'un ensemble de données d'identification du service, vous pouvez en créer un et en extraire la valeur. |
userID |
Identificateur unique d'un utilisateur Cloud Directory. Vous pouvez obtenir cet identificateur à l'aide des API utilisateur Cloud Directory ou en affichant le jeton d'identité de l'utilisateur. |
Lorsque vous appelez cette API, toutes les sessions de connexion unique de l'utilisateur spécifié sont invalidées. Cela signifie que la prochaine fois que l'utilisateur tente de se connecter à l'une de vos applications, à partir de n'importe quel navigateur ou appareil, il est invité à entrer de nouveau ses données d'identification.