Authentification des utilisateurs à l'aide d'un Application Load Balancer - Elastic Load Balancing

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Authentification des utilisateurs à l'aide d'un Application Load Balancer

Vous pouvez configurer un Application Load Balancer pour authentifier les utilisateurs de manière sécurisée à mesure qu'ils accèdent à vos applications. Cela vous permet de confier la tâche d'authentification des utilisateurs à votre équilibreur de charge pour que vos applications puissent se concentrer sur leur logique métier.

Les cas d'utilisation suivants sont pris en charge :

  • Authentification des utilisateurs via un fournisseur d'identité (IdP) compatible avec OpenID Connect (OIDC).

  • Authentifiez les utilisateurs via les réseaux sociaux IdPs, tels qu'Amazon ou Google FaceBook, via les groupes d'utilisateurs pris en charge par Amazon Cognito.

  • Authentifiez les utilisateurs via les identités d'entreprise, à l'aide de SAML, OpenID Connect (OIDC) ou OAuth, via les groupes d'utilisateurs pris en charge par Amazon Cognito.

Préparation à l'utilisation d'un IdP compatible avec OIDC

Procédez comme suit si vous utilisez un fournisseur d'identité (IdP) compatible avec OIDC avec votre Application Load Balancer :

  • Créez une nouvelle application OIDC dans votre IdP. Le DNS de l'IdP doit pouvoir être résolu publiquement.

  • Vous devez configurer un ID client et un secret client.

  • Obtenez les points de terminaison suivants publiés par l'IdP : d'autorisation, de jeton et d'infos utilisateur. Vous pouvez trouver ces informations dans la configuration.

  • Les certificats des points de terminaison IdP doivent être émis par une autorité de certification publique de confiance.

  • Les entrées DNS des points de terminaison doivent pouvoir être résolues publiquement, même si elles sont résolues en adresses IP privées.

  • Autorisez l'une des URL de redirection suivantes dans votre application d'IdP (celle que vos utilisateurs utiliseront), où DNS est le nom de domaine de votre équilibreur de charge et CNAME est l'alias DNS pour votre application :

    • https://DNS/oauth2/idpresponse

    • https://CNAME/oauth2/idpresponse

Préparer l'utilisation d'Amazon Cognito

L'intégration d'Amazon Cognito pour les équilibreurs de charge d'application est disponible dans les régions suivantes :

  • USA Est (Virginie du Nord)

  • USA Est (Ohio)

  • USA Ouest (Californie du Nord)

  • US West (Oregon)

  • Canada (Centre)

  • Europe (Stockholm)

  • Europe (Milan)

  • Europe (Francfort)

  • Europe (Zurich)

  • Europe (Irlande)

  • Europe (Londres)

  • Europe (Paris)

  • Amérique du Sud (São Paulo)

  • Asie-Pacifique (Tokyo)

  • Asie-Pacifique (Séoul)

  • Asie-Pacifique (Osaka)

  • Asie-Pacifique (Mumbai)

  • Asie-Pacifique (Singapour)

  • Asie-Pacifique (Sydney)

  • Asie-Pacifique (Jakarta)

  • Moyen-Orient (EAU)

  • Moyen-Orient (Bahreïn)

  • Afrique (Le Cap)

  • Israël (Tel Aviv)

Procédez comme suit si vous utilisez des groupes d'utilisateurs Amazon Cognito avec votre Application Load Balancer :

  • Créez un groupe d'utilisateurs. Pour plus d'informations sur les Groupes d'utilisateurs Amazon Cognito, consultez le Guide du développeur Amazon Cognito.

  • Créez un client de groupe d'utilisateurs. Vous devez configurer le client pour générer un secret client, utiliser le flux d'octroi de code et prendre en charge les mêmes portées OAuth que celles utilisées par l'équilibreur de charge. Pour plus d'informations, consultez Configuration d'un client d'application pour groupe d'utilisateurs dans le Guide du développeur Amazon Cognito.

  • Créez un domaine de groupe d'utilisateurs. Pour plus d'informations, consultez Ajout d'un nom de domaine pour votre groupe d'utilisateurs dans le Guide du développeur Amazon Cognito.

  • Vérifiez que la portée demandée renvoie un jeton d'identification. Par exemple, la portée par défaut, openid, renvoie un jeton d'identification mais la portée aws.cognito.signin.user.admin ne le fait pas.

    Remarque : les équilibreurs de charge d'application ne prennent pas en charge les jetons d'accès personnalisés émis par Amazon Cognito. Pour plus d'informations, consultez la section Génération préalable des jetons dans le manuel Amazon Cognito Developer Guide.

  • Pour procéder à une fédération avec un IdP social ou d'entreprise, activez l'IdP dans la section de fédération. Pour plus d'informations, consultez Ajouter l'authentification sociale à un groupe d'utilisateurs ou Ajouter l'authentification avec un IdP SAML à un groupe d'utilisateurs dans le Guide du développeur Amazon Cognito.

  • Autorisez les URL de redirection suivantes dans le champ URL de rappel pour Amazon Cognito, où DNS est le nom de domaine de votre équilibreur de charge, et CNAME est l'alias DNS de votre application (si vous en utilisez un) :

    • https://DNS/oauth2/idpresponse

    • https://CNAME/oauth2/idpresponse

  • Autorisez le domaine de votre groupe d'utilisateurs sur l'URL de rappel de votre application IdP. Utilisez le format pour votre IdP. Par exemple :

    • https://préfixe-domaine.auth.région.amazoncognito.com/saml2/idpresponse

    • https://domaine-groupe-utilisateurs/oauth2/idpresponse

L'URL de rappel dans les paramètres du client de l'application doit contenir uniquement des lettres minuscules.

Pour permettre à un utilisateur de configurer un équilibreur de charge pour utiliser Amazon Cognito lors de l'authentification des utilisateurs, vous devez autoriser l'utilisateur à appeler l'action cognito-idp:DescribeUserPoolClient.

Préparez-vous à utiliser Amazon CloudFront

Activez les paramètres suivants si vous utilisez une CloudFront distribution devant votre Application Load Balancer :

  • Transférer les en-têtes de demande (tous) : garantit que les réponses aux demandes authentifiées CloudFront ne sont pas mises en cache. Cela les empêche d'être délivrées à partir du cache après l'expiration de la session d'authentification. Pour réduire ce risque lorsque la mise en cache est activée, les propriétaires d'une CloudFront distribution peuvent également définir la valeur time-to-live (TTL) pour qu'elle expire avant l'expiration du cookie d'authentification.

  • Réacheminement et mise en cache des chaînes de requête (toutes) : garantit que l'équilibreur de charge a accès aux paramètres des chaînes de requête nécessaires pour authentifier l'utilisateur avec l'IdP.

  • Transfert des cookies (tous) : garantit que CloudFront tous les cookies d'authentification sont transférés à l'équilibreur de charge.

Configuration de l'authentification utilisateur

Vous configurez l'authentification utilisateur en créant une action d'authentification pour une ou plusieurs règles d'écouteur. Les types d'action authenticate-cognito et authenticate-oidc sont pris en charge uniquement avec les écouteurs HTTPS. Pour obtenir une description des champs correspondants, reportez-vous à AuthenticateCognitoActionConfiget AuthenticateOidcActionConfigdans la version 2015-12-01 de référence de l'API Elastic Load Balancing.

L'équilibreur de charge envoie un cookie de session au client pour conserver l'état d'authentification. Ce cookie contient toujours l'attribut secure, car l'authentification utilisateur nécessite un écouteur HTTPS. Ce cookie contient l'attribut SameSite=None avec les demandes CORS (partage des ressources cross-origin).

Pour un équilibreur de charge prenant en charge plusieurs applications nécessitant une authentification client indépendante, chaque règle d'écouteur comportant une action d'authentification doit avoir un nom de cookie unique. Cela garantit que les clients sont toujours authentifiés auprès de l'IdP avant d'être routés vers le groupe cible spécifié dans la règle.

Les Application Load Balancers ne prennent pas en charge les valeurs de cookie codées par URL.

Par défaut, le champ SessionTimeout est défini sur 7 jours. Si vous souhaitez des sessions plus courtes, vous pouvez configurer un délai d'expiration d'1 seconde au minimum. Pour plus d’informations, consultez Délai d'expiration de session.

Définissez le champ OnUnauthenticatedRequest selon les besoins de votre application. Par exemple :

  • Applications qui nécessitent que l'utilisateur se connecte à l'aide d'une identité sociale ou d'entreprise – Ceci est pris en charge par l'option par défaut, authenticate. Si l'utilisateur n'est pas connecté, l'équilibreur de charge redirige la demande vers le point de terminaison d'autorisation d'IdP et l'IdP invite l'utilisateur à se connecter à l'aide de son interface utilisateur.

  • Applications qui fournissent une vue personnalisée à un utilisateur qui est connecté ou une vue générale à un utilisateur qui n'est pas connecté – Pour prendre en charge ce type d'application, utilisez l'option allow. Si l'utilisateur est connecté, l'équilibreur de charge fournit les demandes utilisateur et l'application peut offrir une vue personnalisée. Si l'utilisateur n'est pas connecté, l'équilibreur de charge transmet la demande sans les demandes utilisateur et l'application peut offrir une vue générale.

  • Applications d'une seule page JavaScript chargées toutes les quelques secondes : si vous utilisez cette deny option, l'équilibreur de charge renvoie une erreur HTTP 401 Unauthorized aux appels AJAX qui ne contiennent aucune information d'authentification. Mais si les informations d'authentification de l'utilisateur ont expiré, le client est redirigé vers le point de terminaison d'autorisation IdP.

L'équilibreur de charge doit être en mesure de communiquer avec le point de terminaison de jeton de l'IdP (TokenEndpoint) et le point de terminaison d'infos utilisateur de l'IdP (UserInfoEndpoint). Les équilibreurs de charge d'application ne prennent en charge l'IPv4 que lorsqu'ils communiquent avec ces points de terminaison. Si votre IdP utilise des adresses publiques, assurez-vous que les groupes de sécurité de votre équilibreur de charge et les ACL réseau de votre VPC autorisent l'accès aux points de terminaison. Lorsque vous utilisez un équilibreur de charge interne ou le type d'adresse IPdualstack-without-public-ipv4, une passerelle NAT peut permettre à l'équilibreur de charge de communiquer avec les points de terminaison. Pour plus d'informations, consultez Principes de base des passerelles NAT dans le Guide de l'utilisateur Amazon VPC.

Utilisez la commande create-rule suivante pour configurer l'authentification utilisateur.

aws elbv2 create-rule --listener-arn listener-arn --priority 10 \ --conditions Field=path-pattern,Values="/login" --actions file://actions.json

Voici un exemple de fichier actions.json qui spécifie une action authenticate-oidc et une action forward. AuthenticationRequestExtraParams vous permet de transmettre des paramètres supplémentaires à un IdP lors de l'authentification. Veuillez suivre la documentation fournie par votre fournisseur d'identité pour déterminer les champs pris en charge

[{ "Type": "authenticate-oidc", "AuthenticateOidcConfig": { "Issuer": "https://idp-issuer.com", "AuthorizationEndpoint": "https://authorization-endpoint.com", "TokenEndpoint": "https://token-endpoint.com", "UserInfoEndpoint": "https://user-info-endpoint.com", "ClientId": "abcdefghijklmnopqrstuvwxyz123456789", "ClientSecret": "123456789012345678901234567890", "SessionCookieName": "my-cookie", "SessionTimeout": 3600, "Scope": "email", "AuthenticationRequestExtraParams": { "display": "page", "prompt": "login" }, "OnUnauthenticatedRequest": "deny" }, "Order": 1 }, { "Type": "forward", "TargetGroupArn": "arn:aws:elasticloadbalancing:region-code:account-id:targetgroup/target-group-name/target-group-id", "Order": 2 }]

Voici un exemple de fichier actions.json qui spécifie une action authenticate-cognito et une action forward.

[{ "Type": "authenticate-cognito", "AuthenticateCognitoConfig": { "UserPoolArn": "arn:aws:cognito-idp:region-code:account-id:userpool/user-pool-id", "UserPoolClientId": "abcdefghijklmnopqrstuvwxyz123456789", "UserPoolDomain": "userPoolDomain1", "SessionCookieName": "my-cookie", "SessionTimeout": 3600, "Scope": "email", "AuthenticationRequestExtraParams": { "display": "page", "prompt": "login" }, "OnUnauthenticatedRequest": "deny" }, "Order": 1 }, { "Type": "forward", "TargetGroupArn": "arn:aws:elasticloadbalancing:region-code:account-id:targetgroup/target-group-name/target-group-id", "Order": 2 }]

Pour plus d’informations, consultez Règles d'un écouteur.

Flux d'authentification

Le schéma de réseau suivant est une représentation visuelle de la façon dont un Application Load Balancer utilise OIDC pour authentifier les utilisateurs.

Comment l'Application Load Balancer authentifie les utilisateurs via OIDC

Les éléments numérotés ci-dessous mettent en évidence et expliquent les éléments présentés dans le schéma de réseau précédent.

  1. L'utilisateur envoie une requête HTTPS à un site Web hébergé derrière un Application Load Balancer. Lorsque les conditions d'une règle avec une action d'authentification sont satisfaites, l'équilibreur de charge recherche un cookie de session d'authentification dans les en-têtes de demande.

  2. Si le cookie n'est pas présent, l'équilibreur de charge redirige l'utilisateur vers le point de terminaison d'autorisation de l'IdP pour que l'IdP puisse authentifier l'utilisateur.

  3. Une fois l'utilisateur authentifié, l'IdP le renvoie à l'équilibreur de charge avec un code d'octroi d'autorisation.

  4. L'équilibreur de charge présente le code d'autorisation au point de terminaison du jeton IdP.

  5. Dès réception d'un code d'autorisation valide, l'IdP fournit le jeton d'identification et le jeton d'accès à l'Application Load Balancer.

  6. L'Application Load Balancer envoie ensuite le jeton d'accès au point de terminaison d'informations utilisateur.

  7. Le point de terminaison des informations utilisateur échange le jeton d'accès contre les réclamations des utilisateurs.

  8. L'Application Load Balancer redirige l'utilisateur avec le cookie de session d'authentification AWSELB vers l'URI d'origine. Comme la plupart des navigateurs limitent la taille des cookies à 4K, l'équilibreur de charge partitionne un cookie dont la taille est supérieure à 4K en plusieurs cookies. Si la taille totale des demandes utilisateur et du jeton d'accès fournis par l'IdP est supérieure à 11 000 octets, l'équilibreur de charge renvoie une erreur HTTP 500 au client et incrémente la métrique ELBAuthUserClaimsSizeExceeded.

  9. L'Application Load Balancer valide le cookie et transmet les informations utilisateur aux cibles figurant dans les en-têtes HTTP X-AMZN-OIDC-* définis. Pour plus d’informations, consultez Encodage de demandes utilisateur et vérification de signature.

  10. La cible renvoie une réponse à l'Application Load Balancer.

  11. L'Application Load Balancer envoie la réponse finale à l'utilisateur.

Chaque nouvelle demande passe par les étapes 1 à 11, tandis que les demandes suivantes passent par les étapes 9 à 11. C'est-à-dire que chaque demande suivante commence à l'étape 9 tant que le cookie n'a pas expiré.

Le cookie AWSALBAuthNonce est ajouté à l'en-tête de la demande une fois que l'utilisateur s'est authentifié auprès de l'IdP. Cela ne change pas la façon dont l'Application Load Balancer traite les demandes de redirection provenant de l'IdP.

Si l'IdP fournit un jeton d'actualisation valide dans le jeton d'identification, l'équilibreur de charge enregistre ce jeton et l'utilise pour actualiser les demandes utilisateur chaque fois que le jeton d'accès expire, jusqu'à ce que la session expire ou que l'actualisation de l'IdP échoue. Si l'utilisateur se déconnecte, l'actualisation échoue et l'équilibreur de charge redirige l'utilisateur vers le point de terminaison d'autorisation de l'IdP. Cela permet à l'équilibreur de charge de supprimer des sessions une fois que l'utilisateur s'est déconnecté. Pour plus d’informations, consultez Délai d'expiration de session.

Note

L'expiration du cookie est différente de l'expiration de la session d'authentification. L'expiration du cookie est un attribut du cookie, qui est fixé à 7 jours. La durée réelle de la session d'authentification est déterminée par le délai d'expiration de session configuré sur l'Application Load Balancer pour la fonctionnalité d'authentification. Ce délai d'expiration de session est inclus dans la valeur du cookie Auth, qui est également chiffré.

Encodage de demandes utilisateur et vérification de signature

Une fois votre équilibreur de charge a authentifié un utilisateur avec succès, il envoie les demandes utilisateur reçues de l'IdP à la cible. L'équilibreur de charge signe les demandes utilisateur pour que les applications puissent vérifier la signature et s'assurer que les demandes ont été envoyées par l'équilibreur de charge.

L'équilibreur de charge ajoute les en-têtes HTTP suivants :

x-amzn-oidc-accesstoken

Le jeton d'accès du point de terminaison de jeton, en texte brut.

x-amzn-oidc-identity

Le champ d'objet (sub) du point de terminaison d'infos utilisateur, en texte brut.

Remarque : la sous-revendication est le meilleur moyen d'identifier un utilisateur donné.

x-amzn-oidc-data

Les demandes utilisateur au format de jeton web JSON (JWT).

Les jetons d'accès et les réclamations des utilisateurs sont différents des jetons d'identification. Les jetons d'accès et les réclamations des utilisateurs autorisent uniquement l'accès aux ressources du serveur, tandis que les jetons d'identification contiennent des informations supplémentaires pour authentifier un utilisateur. L'Application Load Balancer crée un nouveau jeton d'accès lors de l'authentification d'un utilisateur et transmet uniquement les jetons d'accès et les demandes au backend, mais il ne transmet pas les informations du jeton d'identification.

Ces jetons suivent le format JWT, mais ne sont pas des jetons d'identification. Le format JWT inclut un en-tête, une charge utile et une signature qui sont encodés en URL base64 et inclut des caractères de remplissage à la fin. Un Application Load Balancer utilise ES256 (ECDSA utilisant P-256 et SHA256) pour générer la signature JWT.

L'en-tête JWT est un objet JSON avec les champs suivants :

{ "alg": "algorithm", "kid": "12345678-1234-1234-1234-123456789012", "signer": "arn:aws:elasticloadbalancing:region-code:account-id:loadbalancer/app/load-balancer-name/load-balancer-id", "iss": "url", "client": "client-id", "exp": "expiration" }

La charge utile JWT est un objet JSON qui contient les demandes utilisateur reçues du point de terminaison d'infos utilisateur de l'IdP.

{ "sub": "1234567890", "name": "name", "email": "alias@example.com", ... }

Comme l'équilibreur de charge ne chiffre pas les demandes utilisateur, nous vous recommandons de configurer le groupe cible pour utiliser HTTPS. Si vous configurez votre groupe cible pour utiliser HTTP, veillez à restreindre le trafic vers votre équilibreur de charge à l'aide de groupes de sécurité.

Pour garantir la sécurité, vous devez vérifier la signature avant d'effectuer toute autorisation basée sur les revendications et vérifier que le signer champ de l'en-tête JWT contient l'ARN Application Load Balancer attendu.

Pour obtenir la clé publique, obtenez l'ID de clé de l'en-tête JWT et utilisez-le pour rechercher la clé publique à partir du point de terminaison. Le point de terminaison pour chaque région AWS est le suivant :

https://public-keys.auth.elb.region.amazonaws.com/key-id

En effet AWS GovCloud (US), les points de terminaison sont les suivants :

https://s3-us-gov-west-1.amazonaws.com/aws-elb-public-keys-prod-us-gov-west-1/key-id https://s3-us-gov-east-1.amazonaws.com/aws-elb-public-keys-prod-us-gov-east-1/key-id

L'exemple suivant montre comment obtenir l'ID de la clé, la clé publique et la charge utile en Python 3.x :

import jwt import requests import base64 import json # Step 1: Validate the signer expected_alb_arn = 'arn:aws:elasticloadbalancing:region-code:account-id:loadbalancer/app/load-balancer-name/load-balancer-id' encoded_jwt = headers.dict['x-amzn-oidc-data'] jwt_headers = encoded_jwt.split('.')[0] decoded_jwt_headers = base64.b64decode(jwt_headers) decoded_jwt_headers = decoded_jwt_headers.decode("utf-8") decoded_json = json.loads(decoded_jwt_headers) received_alb_arn = decoded_json['signer'] assert expected_alb_arn == received_alb_arn, "Invalid Signer" # Step 2: Get the key id from JWT headers (the kid field) kid = decoded_json['kid'] # Step 3: Get the public key from regional endpoint url = 'https://public-keys.auth.elb.' + region + '.amazonaws.com/' + kid req = requests.get(url) pub_key = req.text # Step 4: Get the payload payload = jwt.decode(encoded_jwt, pub_key, algorithms=['ES256'])

L'exemple suivant montre comment obtenir l'ID de la clé, la clé publique et la charge utile en Python 2.7 :

import jwt import requests import base64 import json # Step 1: Validate the signer expected_alb_arn = 'arn:aws:elasticloadbalancing:region-code:account-id:loadbalancer/app/load-balancer-name/load-balancer-id' encoded_jwt = headers.dict['x-amzn-oidc-data'] jwt_headers = encoded_jwt.split('.')[0] decoded_jwt_headers = base64.b64decode(jwt_headers) decoded_json = json.loads(decoded_jwt_headers) received_alb_arn = decoded_json['signer'] assert expected_alb_arn == received_alb_arn, "Invalid Signer" # Step 2: Get the key id from JWT headers (the kid field) kid = decoded_json['kid'] # Step 3: Get the public key from regional endpoint url = 'https://public-keys.auth.elb.' + region + '.amazonaws.com/' + kid req = requests.get(url) pub_key = req.text # Step 4: Get the payload payload = jwt.decode(encoded_jwt, pub_key, algorithms=['ES256'])
Considérations
  • Ces exemples ne décrivent pas comment valider la signature de l'émetteur avec la signature figurant dans le jeton.

  • Les bibliothèques standard ne sont pas compatibles avec les remplissages qui sont inclus dans le jeton d'authentification de l'Application Load Balancer au format JWT.

Expiration

Délai d'expiration de session

Le jeton d'actualisation et le délai d'expiration de session fonctionnent conjointement comme suit :

  • Si le délai d'expiration de la session est plus court que l'expiration du jeton d'accès, l'équilibreur de charge respecte le délai d'expiration de la session. Si l'utilisateur dispose d'une session active avec l'IdP, il est possible que l'utilisateur ne soit pas invité à se connecter à nouveau. Sinon, l'utilisateur est redirigé pour se connecter.

    • Si le délai d'expiration de la session IdP est supérieur au délai d'expiration de la session Application Load Balancer, l'utilisateur n'a pas à fournir d'informations d'identification pour se reconnecter. Au lieu de cela, l'IdP redirige vers l'Application Load Balancer avec un nouveau code d'autorisation. Les codes d'autorisation sont à usage unique, même s'il n'y a pas de reconnexion.

    • Si le délai d'expiration de la session IdP est égal ou inférieur au délai d'expiration de la session Application Load Balancer, l'utilisateur est invité à fournir des informations d'identification pour se reconnecter. Une fois que l'utilisateur s'est connecté, l'IdP est redirigé vers l'Application Load Balancer avec un nouveau code d'autorisation, et le reste du flux d'authentification se poursuit jusqu'à ce que la demande atteigne le backend.

  • Si le délai d'expiration de session est plus long que le délai d'expiration du jeton d'accès et que l'IdP prend en charge les jetons d'actualisation, l'équilibreur de charge conserve la session d'authentification jusqu'à ce que celle-ci expire. Ensuite, l'utilisateur se reconnecte.

  • Si le délai d'expiration de session est plus long que le délai d'expiration du jeton d'accès et que l'IdP prend en charge les jetons d'actualisation, l'équilibreur de charge actualise la session utilisateur chaque fois que le jeton d'accès expire. L'équilibreur de charge demande à l'utilisateur de se reconnecter uniquement après que la session d'authentification a expiré ou quand le flux d'actualisation échoue.

Délai d'expiration de connexion client

Un client doit lancer et terminer le processus d'authentification dans les 15 minutes. Si un client ne parvient pas à effectuer l'authentification dans le délai de 15 minutes, il reçoit une erreur HTTP 401 de la part de l'équilibreur de charge. Ce délai d'expiration ne peut pas être modifié ou supprimé.

Par exemple, si un utilisateur charge la page de connexion via l'Application Load Balancer, il doit terminer le processus de connexion dans les 15 minutes. Si l'utilisateur attend puis tente de se connecter après l'expiration du délai de 15 minutes, l'équilibreur de charge renvoie une erreur HTTP 401. L'utilisateur devra actualiser la page et essayer de se reconnecter.

Déconnexion de l'authentification

Lorsqu'une application doit déconnecter un utilisateur authentifié, elle doit définir le délai d'expiration du cookie de session d'authentification sur -1 et rediriger le client vers le point de terminaison de déconnexion de l'IdP (si l'IdP en prend un en charge). Pour empêcher les utilisateurs de réutiliser un cookie supprimé, nous vous recommandons de configurer un délai d'expiration aussi court que raisonnable pour le jeton d'accès. Si un client fournit à un équilibreur de charge un cookie de session comportant un jeton d'accès expiré avec un jeton d'actualisation non-NULL, l'équilibreur de charge prend contact avec l'IdP pour déterminer si l'utilisateur est toujours connecté.

La page d'accueil de déconnexion du client est une page non authentifiée. Cela signifie qu'elle ne peut pas être à l'origine d'une règle Application Load Balancer nécessitant une authentification.

  • Lorsqu'une demande est envoyée à la cible, l'application doit définir l'expiration sur -1 pour tous les cookies d'authentification. Application Load Balancers prennent en charge les cookies d'une taille maximale de 16 000 et peuvent donc créer jusqu'à 4 partitions à envoyer au client.

    • Si l'IdP possède un point de terminaison de déconnexion, il doit émettre une redirection vers le point de terminaison de déconnexion de l'IdP, par exemple, le point de terminaison LOGOUT décrit dans le Guide du développeur Amazon Cognito.

    • Si l'IdP ne possède pas de point de terminaison de déconnexion, la demande est renvoyée sur la page d'accueil de déconnexion du client et le processus de connexion est redémarré.

  • En supposant que l'IdP possède un point de terminaison de déconnexion, l'IdP doit faire expirer les jetons d'accès et actualiser les jetons, puis rediriger l'utilisateur vers la page d'accueil de déconnexion du client.

  • Les demandes suivantes suivent le flux d'authentification d'origine.