尝试从AWS Cognito提取用户属性时遇到此问题。
由于复制并粘贴了它,所以我不能说它怎么可能是“无效令牌”,而且我还要确保它是accessToken
而不是idToken
或其他任何东西。
此网站上还有其他一些类似的问题,但不能解决我的问题:
"Access token does not contain openid scope" in AWS Cognito
Access token does not have the openid scope
更新:此处是我的应用客户端配置
答案 0 :(得分:2)
好的,我告诉你细节。
简短答案:您必须使用 oauth2 Cognito身份验证,而不是在SDK中使用默认的Cognito身份验证API。
让我解释为什么会遇到错误:您正在使用Cognito身份验证,然后Cognito向您返回了一个不包含“ openid”范围的“访问令牌”,您可以在此处粘贴该令牌以进行检查:https://jwt.io/#encoded-jwt
您必须使用 oauth2 身份验证来获取包含“ openid”的“访问令牌”。为此,您必须使用Hosted UI或AUTHORIZATION Endpoint来获取“访问令牌”。
您可以尝试通过访问链接来托管Hosted UI(请编辑您的域+ response_type + client_id + redirect_uri):https://tsunami.auth.us-east-2.amazoncognito.com/login?response_type=code&client_id=CLIENT_ID&redirect_uri=CALLBACK_SIGNIN_URL
您可以使用授权端点https://tsunami.auth.us-east-2.amazoncognito.com/oauth2/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=CALLBACK_SIGNIN_URL&identity_provider=COGNITO,它将重定向到托管用户界面
答案 1 :(得分:0)
获取用户信息是一个开放ID连接功能,并且需要令牌中的openid范围。
我怀疑问题出在您通过身份验证并获得令牌时未指定此范围。
通常,您在进行身份验证时配置如下范围:
您还可以在Cognito中配置的OAuth客户端信任条目中提供这些密码
有关示例,请参见step 9 of my write up