javascript - 我如何从 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,声明我需要获得一个身份验证代码,这又回到了我写的关于授权端点的上一段。
谢谢,凯利
解决方案
回答有点晚,但最近有同样的问题。实际上有一些可用于此用例的文档,但它可能不完整。所以我们正在寻找的是: 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
推荐阅读
- node.js - 移动文件的Nodejs .mv()函数不起作用
- gdb - 使用 GDB 和 Chibistudio 在 RTOS chibios 中调试线程
- amazon-web-services - 如何从多个 yml 构建 CloudFormation 模板
- java - TestNg 分组
- javascript - 使用繁琐的连接到本地主机数据库的问题
- python - 缓存实例方法时无法腌制命名元组
- android - 使用 Mockito 的 Android MVP 演示者单元测试导致“想要但未调用”错误
- python - 在execution.exe中找不到错误mkl_intel_thread.1.dll
- python - 如何应用蛮力方法解决传教士和食人族问题?
- javascript - Firefox 在 BASE64 图像 DataURI 上窒息