AWS Cognito:如何获取用于API命令行测试的令牌?

时间:2019-04-18 15:11:20

标签: amazon-cognito

我正在尝试对AWS API Gateway中的REST API进行身份验证,该API受AWS Cognito保护,可以通过命令行对API进行一些安全性测试。因此,我应该发送身份验证令牌以获取答案,但我只是不知道如何获取该令牌!

我们的Cognito用户池配置为用于授权代码授予流程和隐式授予,但不用于客户端凭据。我在研究过程中发现的所有内容都与客户端凭据有关,因此,如果有人使用实际上可以使用这些参数的命令行,那就太好了!

1 个答案:

答案 0 :(得分:1)

如果您在AWS API Gateway中具有启用了Cognito身份验证的REST API,则需要在HTTP请求标头中传递Cognito生成的JWT令牌。要检索JWT令牌,您可以尝试从Cognito托管UI进行登录操作,也可以尝试AWS提供的InitiateAuthAdminInitiateAuth 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

这些API调用/托管的UI身份验证机制将在您成功登录后为您提供OIDC兼容的ID令牌和访问令牌。检索令牌后,可以在AWS API Gateway中创建REST API Authorizer时将令牌传递给已设置的令牌源。要了解有关将特定参数传递给cURL请求标头的更多信息,请查看此StackOverflow question