我将Cognito配置为使用AWS Cognito为此处指定的注册/登录提供的自定义网站:
我完全能够在AWS Cognito页面中注册和登录:
https://<your_domain>/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>
问题是,在成功登录后,Cognito会重定向到我设置的重定向页面,重定向包含一个“代码”值作为GET参数。
我找不到如何使用该“代码”参数的文档,但它确实需要由我的Python后端验证,以检查该代码是否是给定用户的有效会话。
您能提供示例Python代码(使用或不使用库,可能是Warrant)和可以验证“代码”参数的JavaScript代码吗?还要获取该“代码”参数的用户的电子邮件/名称?
谢谢!
答案 0 :(得分:1)
返回的代码采用jwt标记的格式。我不清楚这个令牌的格式究竟是什么
我没有任何示例python代码(但是,这是当前的兴趣/项目),但这里有Javascript代码https://github.com/aws/chalice/issues/563
答案 1 :(得分:1)
由于您使用的是授权代码授权流程,因此需要执行以下操作才能获得短暂的id_token,长寿命的refresh_token和access_token。
注意:这是最难实现的流程。如果您需要简化的身份验证流程,请使用隐式授权流程,一旦用户使用登录页面登录,该流程将返回id_token。
对于授权码流程,它需要以下
可以使用AWS Cognito提供的令牌端点来交换此代码以访问令牌。您需要以下列格式发送HTTP POST请求(不使用PKCE)。
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? RESPONSE_TYPE =代码&安培; CLIENT_ID = ad398u21ijw3s9w3939&安培; REDIRECT_URI = https://YOUR_APP/redirect_uri& 状态= STATE&安培; 范围= +的OpenID轮廓+ aws.cognito.signin.user.admin
有关详细信息,请参阅Token Endpoint文档。
收到令牌后,将refresh_token存储在安全的地方以获取新的id_tokens并使用id_token访问API。