本文介绍了如何从AMPLIFY获取访问令牌,AMPLIFY与API网关和COMCONTITO配合使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从Amplify(使用Vue)获取正确的令牌,以便使用Cognito登录API网关。

到目前为止,我尝试了这些:

  Auth.currentSession().then(data => {
    console.log('idToken: %s',data.idToken.jwtToken)
  }).catch(err => console.log(err));

  Auth.currentSession().then(data => {
    console.log('accessToken: ',data.accessToken)
  }).catch(err => console.log(err));

  Auth.currentSession().then(data => {
    console.log('jwtToken: ',data.accessToken.jwtToken)
  }).catch(err => console.log(err));

但是如果我把它们复制给邮递员,它们都不起作用。

如果我获取从测试登录UI返回的access_Token,则唯一有效的方法。

--编辑--

从Amplify提供的令牌似乎具有错误的作用域:

  "scope": "aws.cognito.signin.user.admin"

来自主机UI的令牌如下所示:

  "scope": "phone openid profile email",

提示:可在https://jwt.io/

解码

有关于Amplify的讨论:

https://github.com/aws-amplify/aws-sdk-android/issues/684

但到目前为止我还没有解决方案

推荐答案

经过一番调查,似乎没有在Amplify中设置不同作用域的解决方案。

现在我做了以下操作:

在API网关中设置此作用域:

aws.cognito.signin.user.admin

(不确定这是否是安全问题!?)

现在我可以访问lambda了。因为我需要用户的电子邮件地址,所以我在Python中使用username(由访问令牌传递)向Cogito发出请求。

client = boto3.client('cognito-idp')
user_details = client.admin_get_user(
    Username=user_name,
    UserPoolId=user_pool_id
)

logger.warning("user_details: {}".format(user_details))

无法使用id_Token,因为它不包含通过API网关所需的作用域信息。

这篇关于如何从AMPLIFY获取访问令牌,AMPLIFY与API网关和COMCONTITO配合使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-09 15:11