J'ai aussi eu du mal avec cela; je suis d'accord que la documentation est un peu léger.
Le lien que vous avez fourni montre ce que votre Cognito URL de l'INTERFACE utilisateur pourrait ressembler à:
https://<your_domain>/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>
L'idée est que vous envoyez votre utilisateur à cet URI, ils font de leur entreprise, et ils arrivent ensuite redirigé vers vous avec une sorte de jeton(s) ou du code. Vous pouvez vérifier votre domaine en cliquant sur "nom de Domaine" dans la partie gauche de la barre de navigation.
Application des Paramètres de Client et OAuth les Types de Subventions
Tout d'abord, vérifiez votre Application paramètres du client. Vous aurez besoin de la liste blanche de votre URL de Callback(s) (où Cognito sera de redirection), et assurez-vous qu'au moins un OAuth Flux est autorisé.
Cognito Application des paramètres du client
"Code d'autorisation de la subvention" sera de retour un code d'autorisation, que vous pouvez ensuite envoyer à l' oauth2/token
d'extrémité pour obtenir une access_token, id_token, et refresh_token. C'est un bon choix si vous avez une application de back-end et souhaitez actualiser les jetons.
"Reconnaissance implicite" est ce que j'utilise dans mon application front-end. Il sera de retour un jeton d'accès et un id de jeton directement à mon avant la fin de l'application.
À l'utilisation de la reconnaissance implicite, changement response_type=code
de response_type=token
dans votre Cognito de l'INTERFACE utilisateur de l'URL.
Reconnaissance Implicite De L'Exemple
Donc, si votre redirection après l'authentification réussie ressemble à ceci:
https://localhost:3000/#access_token=eyJraWQiOiJG...&id_token=eyJraWQZNg....&token_type=Bearer&expires_in=3600
Vous avez juste besoin de peler les id_token hors de l'URL et de l'envoyer à Cognito, avec votre groupe d'Utilisateurs comme clé dans les Connexions à la carte. En Javascript:
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:bxxxxxx6-cxxx-4xxx-8xxx-xxxxxxxxxx3c',
Logins: {
'cognito-idp.us-east-1.amazonaws.com/us-east-1_ixxxxxxx': idToken
}
});
Où idToken
est l'id de jeton qui est venu de nouveau à vous sur la redirection.
Code D'Autorisation Type De Subvention
Si vous utilisez le code d'autorisation type de subvention à la place (response_type=code) de votre back-end aurez besoin de faire appel à l' /oauth2/token
de terminaison change le code de jetons. Cet appel devrait ressembler à quelque chose comme ceci:
curl -X POST \
https://<my-cognito-domain>.auth.us-east-1.amazoncognito.com/oauth2/token \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'grant_type=authorization_code&scope=email%20openid%20profile&redirect_uri=https%3A%2F%2Flocalhost%3A3000%2F&client_id=15xxxxxxxxxxxxxx810&code=54826355-b36e-4c8e-897c-d53d37869ee2'
Ensuite, vous pouvez donner cette id de jeton de Cognito comme ci-dessus.
L'INTERFACE utilisateur Notes
Ma demande est popping up le Cognito de l'INTERFACE utilisateur dans un nouvel onglet lorsque l'utilisateur clique sur un lien. Lors de la redirection en revient à mon application, j'utilise postMessage()
d'envoyer les invitations à la fenêtre parent, qui ferme l'onglet nouveau. Je pense que c'est relativement un modèle commun.
Je n'ai pas essayé, mais je suppose que le rendu de l'INTERFACE utilisateur dans une iframe est rejetée, en tant que mesures d'atténuation contre click-jacking. Source
J'espère que c'est au moins un peu utile. Bonne chance!