【问题标题】:How to a call an api endpoint that uses Cognito implicit grant Authorization with aws java SDK如何使用 aws java SDK 调用使用 Cognito 隐式授权授权的 api 端点
【发布时间】:2019-11-13 10:23:00
【问题描述】:

目前正在尝试创建一些验收测试,以调用已通过 Cognito 隐式授权进行身份验证的 api 端点。

是否有可能使用 aws sdk 和 Cognito sdk 请求访问密钥来调用我的 api 端点? 我通过 aws 文档和一般的互联网找到的帮助很少。

我的验收测试使用黄瓜和小黄瓜在 java 上运行。

【问题讨论】:

    标签: java aws-sdk aws-api-gateway amazon-cognito


    【解决方案1】:

    您可以通过 Cognito API 的 initiateAuth 进行身份验证以直接获取令牌。

    https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html

    默认的身份验证方式需要 SRP。

    如果您愿意,您可以通过创建一个单独的应用客户端进行测试并在该应用客户端的App Clients 设置中检查Enable username-password (non-SRP) flow for app-based authentication (USER_PASSWORD_AUTH) 来避免SRP 开销实施。

    您可能希望进行一些部署配置,以便此应用程序客户端仅在测试环境中可用。否则,您可以为应用客户端创建一个密钥。

    除了USER_PASSWORD_AUTH 流之外,还有ADMIN_NO_SRP_AUTH 通过adminInitiateAuth 需要AWS 密钥(也必须在“应用程序客户端”设置中启用)。

    您可以在此处了解有关这些流程的更多信息:https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html?icmpid=docs_cognito_console#amazon-cognito-user-pools-admin-authentication-flow

    【讨论】:

    • 所以我已经完成了你所说的,但是当以以下格式在标头中传递时生成的访问令牌不起作用:“身份验证:承载 {accessTokenValue}” 但是在测试时令牌通过 api 网关,它在访问令牌上失败,但在提供 Id 令牌时通过
    • API Gateway 的 Cognito Authorizer 默认采用 Id Token。您可以将其切换为使用访问令牌。请参阅docs.aws.amazon.com/apigateway/latest/developerguide/… 的第 7 步。注意:您不需要创建自定义 OAuth 范围。您可以提供所提供的默认值,例如:“openid”。
    猜你喜欢
    • 2019-10-15
    • 2021-07-12
    • 2019-11-18
    • 2018-12-05
    • 2018-10-07
    • 2018-08-07
    • 2012-02-15
    • 2021-08-05
    • 2020-12-23
    相关资源
    最近更新 更多