AWS Cognito + 自定义 OpenID + AppSync

问题描述

我需要建议是否可行。我们正在 AWS 上制作 POC。我们有自己的 OpenID 提供商(基于 IdentityServer),我们希望利用 Amazon Amplify + AppSync 从 DynamoDB 获取实时数据同步以及其中一些数据的离线本地存储。我们只需要使用我们的 JWT 令牌在 Cognito 中进行身份验证并将其用于 AppSync。但我们不想将所有用户都推送到 Cognito UserPool 和 Identity Pools 对我们来说更合乎逻辑。

根据我的理解,可能的方法如下

  1. 将我们的 OpenID 提供商配置为 AWS 端的 IAM 提供商
  2. 配置 Cognito 身份池以使用该提供商并添加声明映射,以便将我们的声明映射到生成的 AWS 令牌和类似声明(我们有一个类似 AccountID 的声明)
  3. 配置 Amplify + AppSync 以使用该 Cognito 身份池
  4. 更新 Amplify DynamoDB 解析器以根据映射声明将查询过滤器应用于 DynamoDB,因此用户将只能访问我们在 JWT 令牌中拥有的数据

然后,当用户访问我们的 Amplify 应用程序时,我们会将我们的 jwt 令牌用于 Amplify,该令牌将在 Cognito 身份池中对其进行授权,以便 AppSync 允许使用该令牌。

我的问题是模式是可行的,至少在理论上应该有效?因为我无法让它工作,因为 Cogntio 身份池拒绝了我们的 OpenID 提供程序制作的 JWT 令牌并返回“无效的登录令牌。发行人与 providerName 不匹配”。 如果我在 Cognito 端使用带有开发人员提供程序名称自定义身份验证提供程序,它会起作用,但它不会验证 JWT 令牌并加载任何声明,因为它将其视为某个用户标识符。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)