gpt4 book ai didi

javascript - 使用 Cognito 用户池向 AWS AppSync 验证 Apollo 客户端

转载 作者:行者123 更新时间:2023-11-30 09:20:16 25 4
gpt4 key购买 nike

我正在尝试使用普通的 Apollo Client 连接到我的 AWS AppSync API,但我不确定如何正确构建身份验证 header 。

到目前为止,我已经遵循了此处的 header 身份验证文档:https://www.apollographql.com/docs/react/recipes/authentication.html

还有这段代码,我对其进行了调整以包含对 Amplify 身份验证服务的 token 调用,但它返回 401 错误:

const httpLink = createHttpLink({
uri: '[API end point address]/graphql'
});

const authLink = setContext((_, { headers }) => {
const token = async () => (await Auth.currentSession()).getAccessToken().getJwtToken();
return {
headers: {
...headers,
authorization: token ? `Bearer ${token}` : ""
}
}
})

const client = new ApolloClient({
link: authLink.concat(httpLink),
cache: new InMemoryCache()
})

我能找到的唯一与此相关的文档没有提供任何技术说明:

When using Amazon Cognito User Pools, you can create groups that users belong to. This information is encoded in a JWT token that your application sends to AWS AppSync in an authorization header when sending GraphQL operations.

来自这里:https://docs.aws.amazon.com/appsync/latest/devguide/security.html

我知道 token 很好,因为如果我使用 AppSync JavaScript API,它就可以工作。有什么地方我可以去了解如何实现这一目标或者有人知道如何实现吗?

编辑:

到目前为止,我已尝试更改此行:

  authorization: token ? `Bearer ${token}` : ""

以下尝试:

token

jwtToken: token

authorization: token

Authorization: token

这些都没有用。

最佳答案

免责声明:从未尝试过,但这是我会做的:

查看 AppSync 客户端代码 here作为为 Apollo Client 和 AppSync 服务器创建身份验证链接的基础。看起来该代码为每个可用的身份验证方法提供了脚手架。

具体来说,如果您尝试使用 OPENID_CONNECT 身份验证方法,则 JWT token 似乎不需要添加 Bearer(第 156 行)。

关于javascript - 使用 Cognito 用户池向 AWS AppSync 验证 Apollo 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52226819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com