微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Cognito + 自定义 OpenID + AppSync

如何解决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 举报,一经查实,本站将立刻删除。