如何将令牌从 openID 连接提供商传递到 AppSync api
How to pass token from openID connect provider to AppSync api
我已将 AppSync 设置为使用 OIDC / OpenID Connect 作为授权方,并已在客户端成功获取令牌。我没有使用 cognito。我现在想弄清楚以下内容:
我正在使用 apollo sdk 与我的 AppSync GraphQL 进行交互 api,我如何将此开放 ID 令牌从客户端传递给它?我假设它必须是某种 header,但我找不到任何关于 AppSync 期望它是什么的文档。
传递令牌后,在验证令牌并提取令牌数据后,如何在 AppSync/AppSync 解析器中访问其声明?
- 创建客户端时传递 Firebase 令牌:
const client = new AWSAppSyncClient({
url: ...,
region: ...,
auth: {
type: 'OPENID_CONNECT',
jwtToken: async() => token // Token from Firebase
}
})
- 来自令牌的声明在
$context.identity
中可用。其中一些声明是标准声明(由 OpenID Connect 指定),其他声明是自定义声明(您的项目独有)。如果您使用 AWS Cognito 而不是 Firebase,$context.identity
的形状将类似于发出的形状:
{
"sub" : "...", // standard claim - straight from the token
"issuer" : "...", // standard claim - straight from the token
"username" : "...",
"claims" : { ... }, // custom claims from the token
"sourceIp" : ["x.x.x.x"],
"defaultAuthStrategy" : "..."
}
正如您在上面看到的,sub
和 iss
是两个直接从令牌映射的标准声明。来自令牌的所有其他声明都显示为自定义声明。可以通过 $context.identity.claims.get()
检索它们
然后您可以在解析器和 act on them in a standard fashion 中使用这些声明。
我已将 AppSync 设置为使用 OIDC / OpenID Connect 作为授权方,并已在客户端成功获取令牌。我没有使用 cognito。我现在想弄清楚以下内容:
我正在使用 apollo sdk 与我的 AppSync GraphQL 进行交互 api,我如何将此开放 ID 令牌从客户端传递给它?我假设它必须是某种 header,但我找不到任何关于 AppSync 期望它是什么的文档。
传递令牌后,在验证令牌并提取令牌数据后,如何在 AppSync/AppSync 解析器中访问其声明?
- 创建客户端时传递 Firebase 令牌:
const client = new AWSAppSyncClient({
url: ...,
region: ...,
auth: {
type: 'OPENID_CONNECT',
jwtToken: async() => token // Token from Firebase
}
})
- 来自令牌的声明在
$context.identity
中可用。其中一些声明是标准声明(由 OpenID Connect 指定),其他声明是自定义声明(您的项目独有)。如果您使用 AWS Cognito 而不是 Firebase,$context.identity
的形状将类似于发出的形状:
{
"sub" : "...", // standard claim - straight from the token
"issuer" : "...", // standard claim - straight from the token
"username" : "...",
"claims" : { ... }, // custom claims from the token
"sourceIp" : ["x.x.x.x"],
"defaultAuthStrategy" : "..."
}
正如您在上面看到的,sub
和 iss
是两个直接从令牌映射的标准声明。来自令牌的所有其他声明都显示为自定义声明。可以通过 $context.identity.claims.get()
然后您可以在解析器和 act on them in a standard fashion 中使用这些声明。