如果我有登录用户的访问令牌,如何使用 AWS Amplify GraphQL API?

Posted

技术标签:

【中文标题】如果我有登录用户的访问令牌,如何使用 AWS Amplify GraphQL API?【英文标题】:How to use AWS Amplify GraphQL APIs if I have access token of a logged in user? 【发布时间】:2021-10-15 09:15:06 【问题描述】:

我对 Amplify 库完全陌生。我已经使用 Cognito 用户池登录了我的用户。我有所需的访问令牌(jwt 令牌)。我应该如何使用此访问令牌使用适用于 GraphQL 的 AWS Amplify API?

Amplify.API.query
Amplify.API.mutate

阅读文档,在我看来,我必须使用 Amplify Auth 登录用户才能使用这些 API。换句话说,我如何让 Amplify 知道我拥有经过身份验证的用户的访问令牌并允许我使用 GrapQL API?还是只能通过 Amplify Auth 进行身份验证?

【问题讨论】:

【参考方案1】:

Amplify 会立即为您处理。

在您进行身份验证后,框架会为您处理 JWT。如果您想通过 Cognito + Amplify 看到足够简单的身份验证实现,我向您推荐这个代码库:

https://www.amplifyauth.dev https://github.com/dabit3/amplify-auth-demo

配置 Amplify Auth 并使用 Amplify CLI 创建 API 后,系统会提示您是要创建经过身份验证还是未经身份验证的 API。

在客户端,您只需使用 Amplify JS 库调用 API,系统将为您处理已通过身份验证或未通过身份验证的事实。

【讨论】:

您好,感谢您的回复。实际上,我有与身份验证分开的逻辑。我已经通过单独的自定义逻辑(不是通过 Amplify)对用户进行了身份验证。我有 jwt 令牌。现在,我如何让 amplify 知道我已通过身份验证并让我使用它的 API 进行 appsync 好的,如果您使用 Cognito,您只需将用户池与 AppSync API 连接起来。在客户端,您必须告诉框架如何进行身份验证:docs.amplify.aws/lib/graphqlapi/authz/q/platform/js

以上是关于如果我有登录用户的访问令牌,如何使用 AWS Amplify GraphQL API?的主要内容,如果未能解决你的问题,请参考以下文章

无效的登录令牌。缺少必需的声明:访问 AWS Cognito AssumeRoleWithWebIdentity 时的 aud

Swift - AWS Cognito 使用 Amplify - 如何在 swift 登录后获取令牌?

如何配置 AWS 用户 cognito 身份验证流程以在 Java sdk 后端生成身份令牌、访问令牌?

AWS Cognito 中的“访问令牌不包含 openid 范围”

如何修改 AWS Cognito 用户池的访问令牌和身份令牌的到期时间

用于获取AWS Cognito用户池令牌的OAUTH2服务器?