【问题标题】:How to pass token from openID connect provider to AppSync api如何将令牌从 openID 连接提供程序传递到 AppSync api
【发布时间】:2021-03-11 03:26:03
【问题描述】:

我已将 AppSync 设置为使用 OIDC / OpenID Connect 作为授权者,并已成功获取客户端上的令牌。我没有使用认知。我现在想弄清楚以下几点:

  1. 我正在使用 apollo sdk 与我的 AppSync GraphQL api 进行交互,如何将这个打开的 id 令牌从客户端传递给它?我认为它必须是某种标题,但我找不到任何关于 AppSync 期望它的文档。

  2. 一旦我传递了令牌,在验证并提取令牌数据后,如何在 AppSync/AppSync 解析器中访问其声明?

【问题讨论】:

    标签: amazon-web-services openid-connect openid aws-appsync


    【解决方案1】:
    1. 在创建客户端时传递 Firebase 令牌:
    const client = new AWSAppSyncClient({
      url: ...,
      region: ...,
      auth: {
        type: 'OPENID_CONNECT',
        jwtToken: async() => token // Token from Firebase
      }
    })
    
    1. 来自令牌的声明在 $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" : "..."
    }
    

    正如您在上面看到的,subiss 是直接从令牌映射的两个标准声明。来自令牌的所有其他声明都显示为自定义声明。可以通过$context.identity.claims.get()检索它们

    然后您可以在解析器和act on them in a standard fashion 中使用这些声明。

    【讨论】:

      猜你喜欢
      • 2014-02-18
      • 2022-08-04
      • 2022-11-11
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多