【发布时间】:2020-08-14 06:36:26
【问题描述】:
我正在使用 Cognito App Client 与外部提供商的集成 (Twitch) 用户身份验证工作正常,但由于来自身份验证服务器的代码被 Cognito 使用,我不确定我应该如何使用令牌发送 Twitch 请求,我通常会从 twitch 获得令牌,我 Cognito 不会使用此代码。我只有 Cognito 代码,我可以在 https://{my-domain}/oauth2/token 请求中使用它来换取 Cognito 令牌。请求返回 id_token、access_token 和 refresh_token,解码后的样子 标识令牌
{
"at_hash": "yTNkeTAqzqcXCYi3yLL2Pw",
"sub": "3cfba641-4058-475f-9818-17291175fd31",
"cognito:groups": [
"us-east-1_xxxxxxxxxxxx"
],
"iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxxxxxxxx",
"cognito:username": "xxxxxxxxxxxx",
"preferred_username": "xxxxxxxxxxxx",
"nonce": "SxxlipCDVbXbcXa1H7Uf9_nM0uOurAAObUVCyreBDDux99QoAngUoiGdE0me-0Zon6fEVLLTSqD4EN1Y6_lFm48MaoBaxyywZCQKOT70gfQEfkuhlsjImJd1ko3qH3QKdlmvWSPCUZoACPYNSgR364VPELyQTVMkRTCt9eYROag",
"aud": "35l1cn53cnj9sv1ndu8u01amk0",
"identities": [
{
"userId": "xxxxxxxxxxxx",
"providerName": "xxxxxxxxxxxx",
"providerType": "OIDC",
"issuer": null,
"primary": "true",
"dateCreated": "1588191000072"
}
],
"token_use": "id",
"auth_time": 1588191003,
"exp": 1588194603,
"iat": 1588191003
}
访问令牌
{
"sub": "3cfba641-4058-475f-9818-17291175fd31",
"cognito:groups": [
"us-east-1_xxxxxxxxxxxx"
],
"token_use": "access",
"scope": "aws.cognito.signin.user.admin phone openid profile email",
"auth_time": 1588191003,
"iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxxxxxxxx",
"exp": 1588194603,
"iat": 1588191003,
"version": 2,
"jti": "55863213-c764-4b07-a386-a9c93d14e4b2",
"client_id": "xxxxxxxxxxxx",
"username": "xxxxxxxxxxxx"
}
如何获取用户令牌以调用 Twitch API(例如 GET https://api.twitch.tv/helix/users 端点与授权用户的令牌)
【问题讨论】:
-
您使用 id_token 作为 Authorization 标头来调用 TwitchAPI。
-
@NghiaDo 不,id 令牌不用于授权。无论如何,我已经尝试过了。 twitch 的响应与我尝试使用 access_token 时相同 -
"Must provide a valid Client-ID or OAuth token" -
没错。请使用 id-token 用于 OAuth 令牌
-
@Nghia你完全混淆了这些概念吗?客户端 ID,是我为 twitch 应用程序获取的客户端 ID(当我尝试通过他们的 ID 查询用户时使用它)
-
@NghiaDo 加上我已经尝试将 access_token 和 id_token 用于 Auth 标头
标签: amazon-cognito openid-connect federated-identity