Estoy probando con Cognito de AWS. En este punto, puedo recuperar mi IdToken , AccessToken y RefreshToken de esta manera:
$ aws cognito-idp admin-initiate-auth --user-pool-id us-east-1_XXXXXXXX --client-id XXXXXXXXXXXXXXXXXXXXXXX --auth-flow ADMIN_NO_SRP_AUTH --auth-parameters USERNAME=XXXXXXXXXXXXX,PASSWORD=XXXXXXXXXXXXX --region us-east-1Luego probé la página web predeterminada (proporcionada por Cognito) en una URL como esta:
https://test-cognito.auth.us-east-1.amazoncognito.com/login?response_type=token&client_id=XXXXXXXXXXXXXXXXXXXXXX&redirect_uri=https://example.com Esta URL me llevará a una página en la que debo autenticarme y, una vez que finalice el proceso, me llevará de regreso a mi redirect_url con las identificaciones mencionadas anteriormente adjuntas:
https://example.com#id_token=XXXXX.XXXXXX.XXXXXX&access_token=XXXXXX.XXXXXXX.XXXXXXX&expires_in=3600&token_type=Bearer ¡Pero no hay señales de refresh_token ! ¿Cómo puedo obtener mi refresh_token en este escenario?
No creo que eso sea posible en este momento. AWS establece claramente que el token de actualización solo está disponible si el tipo de flujo es Authorization Code Grant .
Lo que estás intentando es una Implicit Grant . El tipo de respuesta se establece en token en su caso. Para la concesión de código de autorización, establezca el tipo de concesión en code pero eso también requerirá que almacene el secreto del cliente en la aplicación.
Fuente: https://developer.amazon.com/docs/login-with-amazon/refresh-token.html .
Para obtener más información sobre los tipos de subvenciones: https://alexbilbie.com/guide-to-oauth-2-grants/