首页 > 解决方案 > 我如何从 AWS Cognito Api 获取机器对机器的令牌

问题描述

我试图通过 Cognito API 获取令牌,但失败了。我已经阅读了他们的网站,但通过他们模糊的例子我很难过。

我的目标是在 api 上进行第 3 部分服务运行监控测试,这需要它进行身份验证并获取身份令牌和访问令牌。我正在使用 Cognito 的 yes/no 部分,它们是用户池(最简单的一组)。

通过查看文档https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-reference.html,我不太了解流程。

如果我检查授权端点,它将使用 http GET 方法访问个人用户界面以手动输入信息。(文档:https ://docs.aws.amazon.com/cognito/latest/developerguide/authorization-endpoint.html )

查看令牌端点,似乎我可以对机器进行机器操作,但是随着文档https://docs.aws.amazon.com/cognito/latest/developerguide/token-开始变得奇怪endpoint.html,声明我需要获得一个身份验证代码,这又回到了我写的关于授权端点的上一段。

谢谢,凯利

标签: javascriptauthenticationaws-cognito

解决方案


回答有点晚,但最近有同样的问题。实际上有一些可用于此用例的文档,但它可能不完整。所以我们正在寻找的是: https ://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html

要使其正常工作,您需要 - 在设置用户池之后 - 为您的服务器到服务器连接添加一个应用程序客户端。在用户池中转到应用程序客户端在此处输入图像描述

并添加一个应用程序客户端,例如“myBackendService1”

您可以为每个用户池添加多个应用程序客户端,因此您的 SPA 前端可能已经有另一个应用程序客户端,或者您想为不同的后端服务添加多个应用程序客户端。

现在,应用程序客户端设置中的重要部分是,启用了“生成客户端密钥”——之后您将无法更改!在此处输入图像描述

接下来,您需要设置您的域,您可以在其中从 aws 文档中描述的端点获取令牌:在此处输入图像描述

然后在“应用程序集成”下转到资源服务器并添加您要访问的资源服务器(在应用程序客户端中定义的服务将是成功验证后想要访问此资源服务器的服务器) 在此处输入图像描述 在这里也添加一些范围,因为它将是在 api 调用中需要(例如,weather.read 如占位符所示)

现在您已经完成了测试端点的所有设置,例如在 Postman 中: 在此处输入图像描述 仔细检查标头并确保在正文中设置这些键: 在此处输入图像描述 对于授权标头键,请确保使用 Base64Encode(client_id:client_secret)。

然后你应该得到这样的回应在此处输入图像描述

您现在可以在资源服务器中验证此令牌,如此处所述:如何在 API 后端从 AWS Cognito 验证 JWT? 或在这里: https ://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html


推荐阅读