我正在尝试对 AWS API Gateway 中的 REST API 进行身份验证,它通过命令行受 AWS Cognito 保护,以对 API 进行一些安全测试。所以,我应该发送身份验证令牌来获得答案,除非我不知道如何获得该令牌!
我们的 Cognito 用户池配置为授权代码授予流程和隐式授予,但未针对客户端凭据进行配置。我在研究期间发现的一切都是关于客户端凭据的,所以如果有人有一个实际使用这些参数的命令行,那就太好了!
如果 AWS API Gateway 中的 REST API 启用了 Cognito 身份验证,则需要在 HTTP 请求标头中传递 Cognito 生成的 JWT 令牌。要检索 JWT 令牌,您可以尝试从 Cognito 托管 UI 进行登录操作,也可以尝试 AWS 提供的InitiateAuth或AdminInitiateAuth API 调用。为了更清楚地说明,如果您选择隐式授予流程,您只会获得一个 ID 令牌和一个访问令牌。但是,如果您选择授权代码授予流程,您会得到一个code回报,您可以在利用 Cognito 的TOKEN Endpoint 的同时将其转换为 JWT 令牌。AWS Cognito 文档中所述的 AdminInitiateAuth API 调用示例(通过 AWS CLI)如下所示:
aws cognito-idp admin-initiate-auth --user-pool-id us-west-2_aaaaaaaaa --client-id 3n4b5urk1ft4fl3mg5e62d9ado --auth-flow ADMIN_NO_SRP_AUTH --auth-parameters USERNAME=jane@example.com,PASSWORD=password
Run Code Online (Sandbox Code Playgroud)
这些 API 调用/托管 UI 身份验证机制将在您成功登录后为您提供符合 OIDC 的 ID 令牌和访问令牌。检索令牌后,您可以将令牌传递给您在 AWS API Gateway 中创建 REST API 授权方时设置的令牌源。要了解有关将某个参数传递给 cURL 请求标头的更多信息,您可以查看此StackOverflow 问题。
| 归档时间: |
|
| 查看次数: |
7426 次 |
| 最近记录: |