mip*_*pnw 5 amazon-web-services oauth-2.0 amazon-cognito aws-cognito
我有一个应用程序,使用授权代码流从AWS Cognito用户池TOKEN端点获取3个令牌。它收到一个ID_TOKEN,一个ACCESS_TOKEN和一个REFRESH_TOKEN。
该应用使用ID_TOKEN CognitoAWSCredentials在身份池中获取:
var credentials = new CognitoAWSCredentials(IdentityPoolId, Region);
credentials.AddLogin("cognito-idp.<region>.amazonaws.com/<UserPoolId>", ID_TOKEN);
Run Code Online (Sandbox Code Playgroud)
一段时间后,凭证停止工作,并且NotAuthorizedException按预期的那样,在AWS Client上调用任何方法都将引发throws ,令牌将在1小时后失效。
据我了解,当令牌过期时,可以再次使用TOKEN端点并传递REFRESH_TOKEN来获取新令牌。这很有用,如果可以避免的话,我宁愿不退出应用程序用户,也不强迫他们再次通过OAUTH身份验证流程。
因此,我尝试将令牌HTTP POST刷新为/oauth2/token与我第一次获得令牌时相同的请求标头,但请求正文稍有不同
?grant_type=refresh_token&client_id=xxx&refresh_token=xxx
我得到一个ID_TOKEN和ACCESS_TOKEN,但没有REFRESH_TOKEN。
1-这是预期的吗?这是否意味着2个小时后再次刷新使用了相同的REFRESH_TOKEN?还是TOKEN端点有一个微妙的线索让我发现刷新时出了点问题(更好的线索可能是端点返回错误...)
2-仔细检查后,新的ID_TOKEN与旧的ID_TOKEN相同。这是预料之中的,为什么TOKEN端点没有返回新的ID_TOKEN?(当我使用新的ID_TOKEN创建新的CognitoAWSCredentials时,我得到的证书是无用的。当我第一次访问任何AWS Client时,它们都会引发异常。实际上,由于新的ID_TOKEN是旧的,它们已经过期。)
3-我应该使用ACCESS_TOKEN而不是ID_TOKEN,如何使用ACCESS_TOKEN获取CognitoAWSCredentials?
4- CognitoAWSCredentials实际上RefreshingAWSCredentials,那些实际上是自动刷新的,怎么办?
| 归档时间: |
|
| 查看次数: |
1161 次 |
| 最近记录: |