Point de terminaison AUTORISATION
Le point de terminaison /oauth2/authorize
connecte l'utilisateur.
GET /oauth2/authorize
Le point de terminaison /oauth2/authorize
prend uniquement en charge HTTPS GET
. Le client du groupe d'utilisateurs adresse généralement cette demande via un navigateur. Les navigateurs web incluent Chrome ou Firefox. Les navigateurs Android comprennent l'onglet Chrome personnalisé. Les navigateurs iOS incluent le contrôle Vue Safari.
Le serveur d'autorisation exige HTTPS plutôt que HTTP comme protocole lors de l'accès au point de terminaison d'autorisation. Pour plus d'informations à partir de la norme OpenID Connect, consultez Point de terminaison d'autorisation
Paramètres de requête
- response_type
-
Type de réponse. Doit être
code
outoken
. Indique si le client souhaite un code d'autorisation (flux d'octroi de code d'autorisation) pour l'utilisateur ou s'il émet directement des jetons pour l'utilisateur (flux implicite).Obligatoire.
- client_id
-
ID du client.
Il doit s'agir d'un client que vous avez déjà enregistré dans le groupe d'utilisateurs et qualifié pour la fédération.
Obligatoire.
- redirect_uri
-
URL vers laquelle le serveur d'authentification redirige le navigateur une fois qu'Amazon Cognito a autorisé l'utilisateur.
Un identificateur de ressource uniforme (URI) de redirection doit avoir les attributs suivants :
-
Il doit s'agir d'un URI absolu.
-
Vous devez avoir préalablement enregistré l'URI avec un client.
-
Il ne peut pas inclure un composant de fragment.
Veuillez consulter OAuth 2.0 - Redirection Endpoint
. Amazon Cognito exige
HTTPS
plutôt queHTTP
, sauf pourhttp://localhost
à des fins de test uniquement.Amazon Cognito prend également en charge les URL de rappel d'application comme
myapp://example
.Obligatoire.
-
- état
-
Valeur opaque que le client ajoute à la demande initiale. Le serveur d'autorisation inclut cette valeur lors de la redirection vers le client.
Le client doit utiliser cette valeur pour empêcher les attaques de type CSRF
. Facultative mais recommandée.
- identity_provider
-
Ajoutez ce paramètre pour contourner l'interface utilisateur hébergée et rediriger votre utilisateur vers une page de connexion de fournisseur. La valeur du paramètre identity_provider est le nom du fournisseur d'identité, tel qu'il apparaît dans votre groupe d'utilisateurs.
-
Pour les fournisseurs sociaux, vous pouvez utiliser les valeurs identity_provider de Facebook, Google, LoginWithAmazon et SignInWithApple.
-
Pour les groupes d'utilisateurs Amazon Cognito, utilisez la valeur COGNITO.
-
Pour les fournisseurs d'identité SAML et OIDC, utilisez le nom que vous avez attribué au fournisseur d'identité dans votre groupe d'utilisateurs.
Facultatif.
-
- idp_identifier
-
Ajoutez ce paramètre pour rediriger vers un fournisseur avec un autre nom pour le nom identity_provider. Vous pouvez saisir des identifiants pour vos fournisseurs d'identité SAML et OIDC à partir de l'onglet Sign-in experience (Expérience de connexion) de la console Amazon Cognito.
Facultatif.
- portée
-
Peut être une combinaison de tous les périmètres réservés au système ou personnalisées qui sont associées à un client. Les périmètres doivent être séparés par des espaces. Les périmètres dédiés à un système sont
openid
,email
,phone
,profile
etaws.cognito.signin.user.admin
. Tout périmètre utilisé doit être associé au client. Dans le cas contraire, il sera ignoré lors de l'exécution.Si le client ne demande pas de périmètre, le serveur d'authentification utilise tous les périmètres associés au client.
Un jeton d'identification est renvoyé uniquement si le paramètre
openid
est demandé. Le jeton d'accès peut être utilisé pour des groupes d'utilisateurs Amazon Cognito que si le périmètreaws.cognito.signin.user.admin
est demandé. Les paramètres scopephone
,email
etprofile
peuvent uniquement être demandés si le paramètre scopeopenid
est également demandé. Ces paramètres scope régissent les demandes qui font partie du jeton d'identification.Facultatif.
- code_challenge_method
-
Méthode que vous avez utilisée pour générer la stimulation. Le PKCE RFC
définit deux méthodes, S256 et « plain » . Cependant, le serveur d'authentification Amazon Cognito ne prend en charge que la méthode S256. Facultatif.
- code_challenge
-
Stimulation que vous avez générée à partir de
code_verifier
.Obligatoire uniquement lorsque vous spécifiez un paramètre
code_challenge_method
. - nonce
-
Valeur aléatoire que vous pouvez ajouter à la demande. La valeur nonce que vous fournissez est incluse dans le jeton d'identification émis par Amazon Cognito. Vous pouvez utiliser une valeur
nonce
pour vous protéger contre les attaques de relecture.
Exemples de demandes avec des réponses positives
Octroi de code d'autorisation
Exemple de demande
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=code& client_id=ad398u21ijw3s9w3939& redirect_uri=https://YOUR_APP/redirect_uri& state=STATE& scope=openid+profile+aws.cognito.signin.user.admin
Exemple de réponse
Le serveur d'authentification Amazon Cognito effectue une redirection vers votre application avec le code d'autorisation et l'état. Le code et l'état doivent être renvoyés dans les paramètres de chaîne de requête et non pas dans le fragment. Une chaîne de requête est la partie d'une demande web qui s'affiche après un caractère « ? » ; la chaîne peut contenir un ou plusieurs paramètres séparés par des caractères « & ». Un fragment est la partie d'une demande Web qui s'affiche après un caractère « # » pour spécifier une sous-section d'un document.
La réponse renvoie un code d'utilisation à usage unique qui est valide pendant cinq minutes.
HTTP/1.1 302 Found
Location: https://YOUR_APP/redirect_uri?code=AUTHORIZATION_CODE&state=STATE
Octroi de code d'autorisation avec PKCE
Exemple de demande
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=code& client_id=ad398u21ijw3s9w3939& redirect_uri=https://YOUR_APP/redirect_uri& state=STATE& scope=aws.cognito.signin.user.admin& code_challenge_method=S256& code_challenge=CODE_CHALLENGE
Exemple de réponse
Le serveur d'authentification procède à la redirection vers votre application avec le code d'autorisation et l'état. Le code et l'état doivent être renvoyés dans les paramètres de chaîne de requête et non pas dans le fragment.
HTTP/1.1 302 Found
Location: https://YOUR_APP/redirect_uri?code=AUTHORIZATION_CODE&state=STATE
Octroi de jeton sans paramètre de périmètre openid
Exemple de demande
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=token& client_id=ad398u21ijw3s9w3939& redirect_uri=https://YOUR_APP/redirect_uri& state=STATE& scope=aws.cognito.signin.user.admin
Exemple de réponse
Le serveur d'autorisation Amazon Cognito effectue une redirection vers votre application avec un jeton d'accès. Comme la portée openid
n'a pas été demandée, Amazon Cognito ne renvoie pas de jeton d'identification. De plus, Amazon Cognito ne renvoie pas de jeton d'actualisation dans ce flux. Amazon Cognito renvoie l'état et le jeton d'accès dans le fragment et non pas dans la chaîne de requête.
HTTP/1.1 302 Found
Location: https://YOUR_APP/redirect_uri#access_token=ACCESS_TOKEN&token_type=bearer&expires_in=3600&state=STATE
Octroi de jeton avec paramètre de portée openid
Exemple de demande
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=token& client_id=ad398u21ijw3s9w3939& redirect_uri=https://YOUR_APP/redirect_uri& state=STATE& scope=aws.cognito.signin.user.admin+openid+profile
Exemple de réponse
Le serveur d'autorisation procède à la redirection vers votre application avec un jeton d'accès et un jeton d'identification (étant donné que le paramètre scope openid
a été inclus).
HTTP/1.1 302 Found
Location: https://YOUR_APP/redirect_uri#id_token=ID_TOKEN&access_token=ACCESS_TOKEN&token_type=bearer&expires_in=3600&state=STATE
Exemples de réponses négatives
Voici des exemples de réponses négatives :
-
Si
client_id
etredirect_uri
sont valides, mais que les paramètres de demande ne sont pas correctement formatés, le serveur d'authentification redirige l'erreur vers l'URIredirect_uri
et ajoute un message d'erreur dans un paramètre d'URL. Par exemple, le problème peut être que la réponse n'inclut pasresponse_type
ou que la réponse fournitcode_challenge
mais pascode_challenge_method
, ou encore quecode_challenge_method
n'est pas « S256 ».HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request
-
Si le client demande un « code » ou un « jeton » dans
response_type
, mais n'est pas autorisé à effectuer ces demandes, le serveur d'autorisation Amazon Cognito renvoieunauthorized_client
à l'URIredirect_uri
du client, comme suit :HTTP 1.1 302 Found Location: https://client_redirect_uri?error=unauthorized_client
-
Si le client demande une portée inconnue, incorrecte ou non valide, le serveur d'autorisation Amazon Cognito renvoie
invalid_scope
à l'URIredirect_uri
du client, comme suit :HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_scope
-
En cas d'erreur inattendue au niveau du serveur, le serveur d'authentification doit renvoyer
server_error
à l'URIredirect_uri
du client. Étant donné que l'erreur HTTP 500 n'est pas envoyée au client, n'affichez pas cette erreur à l'utilisateur dans le navigateur. L'erreur suivante doit être renvoyée :HTTP 1.1 302 Found Location: https://client_redirect_uri?error=server_error
-
Quand Amazon Cognito authentifie par fédération auprès de fournisseurs d'identité tiers, Amazon Cognito peut rencontrer les problèmes de connexion suivants :
-
Si un délai de connexion se produit lors de la demande d'un jeton auprès du fournisseur d'identité, le serveur d'authentification redirige l'erreur vers l'URI
redirect_uri
du client de la façon suivante :HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Timeout+occurred+in+calling+IdP+token+endpoint
-
Si un retard de connexion se produit lors de l'appel du point de terminaison jwks pour la validation du jeton
id_token
, le serveur d'authentification redirige l'erreur vers l'URIredirect_uri
du client comme suit :HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=error_description=Timeout+in+calling+jwks+uri
-
-
Lors de l'authentification par fédération auprès de fournisseurs d'identité tiers, les fournisseurs peuvent renvoyer des réponses d'erreur en raison d'erreurs de configuration ou autres telles que les suivantes :
-
Si une réponse d'erreur est reçue d'autres fournisseurs, le serveur d'authentification redirige l'erreur vers le
redirect_uri
du client de la façon suivante :HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=[IdP name]+Error+-+[status code]+error getting token
-
Si une réponse d'erreur est reçue de Google, le serveur d'authentification redirige l'erreur vers l'URI
redirect_uri
du client de la façon suivante :HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Google+Error+-+[status code]+[Google provided error code]
-
-
Quand Amazon Cognito rencontre une exception dans le protocole de communication lors de l'établissement d'une connexion à un fournisseur d'identité externe, le serveur d'authentification redirige l'erreur vers l'URI
redirect_uri
du client avec l'un des messages suivants :-
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Connection+reset
-
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Read+timed+out
-