【问题标题】:Unable to connect with API Gateway using Cognito-issued access tokens无法使用 Cognito 颁发的访问令牌连接 API Gateway
【发布时间】:2020-05-06 08:02:10
【问题描述】:

文档here 说,您可以使用 cognito 发布的访问令牌或 idToken 连接 AWS API 网关。

我在我的一个 Angular 项目中使用 amazon-cognito-identity-js。登录后,我会收到三个令牌,即。 sdk存储到本地存储的accessToken、idToken和refreshToken。

在后续调用中使用 idToken 作为 Authorization 标头成功地为我提供了来自 API 网关集成方法的数据,而如果我使用 accessToken 我收到 401-Unauthorised 并且响应标头说: x-amzn-errortype: UnauthorizedException

访问令牌不能用于上述目的吗?我可以很好地使用 idToken,除了在 cognito.user.signOut 甚至 globalSignOut 之后使 idToken 失效存在已知问题,正如 here 所解释的那样。

有人可以建议为什么访问令牌可能不起作用。

【问题讨论】:

    标签: amazon-web-services amazon-cognito access-token aws-userpools


    【解决方案1】:

    如果您要验证任何自定义范围,则可以针对 API 端点使用访问令牌。换句话说,如果您没有为您的应用程序客户端定义任何自定义范围,您将使用 id 令牌来调用 API 端点。否则,您可以使用访问令牌来验证任何自定义范围。

    希望这会有所帮助。

    参考:

    https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html#amazon-cognito-user-pools-using-the-access-token

    【讨论】:

    • 感谢您的链接。现在,我在网关上配置了大约 100 种方法。我是否必须单独确定它们的范围。
    • 不幸的是,如果您不想限定每个 API 方法的范围,或者您可以编写一个 lambda 函数用作自定义授权方并在 lambda 函数内验证 JWT 令牌范围。如果您找到更好的方法,请告诉我;)我也有几百个 API 方法。
    猜你喜欢
    • 2022-11-15
    • 2021-01-30
    • 1970-01-01
    • 2017-11-02
    • 2019-08-20
    • 2018-10-28
    • 2020-07-29
    • 2017-12-07
    • 1970-01-01
    相关资源
    最近更新 更多