gpt4 book ai didi

oauth - AWS API Gateway - 将访问 token 与 Cognito 用户池授权方一起使用?

转载 作者:行者123 更新时间:2023-12-04 11:06:39 25 4
gpt4 key购买 nike

我正在配置具有各种前端(移动和 Web 应用程序)和单个 API 后端的应用程序,由 Lambda 提供支持并通过 AWS API Gateway 访问。

由于我计划使用 Cognito 对用户进行身份验证和授权,因此我在我的 API 网关和几个 API 方法上设置了一个 Cognito 用户池授权器。

对于这样的架构,从 OAuth 的角度来看,我的应用程序(例如 iOS 或 Vue.js 应用程序)是客户端应用程序,而我的 API 网关后端是资源服务器,这似乎是合乎逻辑的。基于 this Auth0 forum post因此,很明显我应该在我的客户端应用程序中使用 ID token ,并传递一个访问 token 来授权我的 API 网关资源。

当我点击 Cognito /oauth2/authorize端点获取访问代码并使用该代码点击 /oauth2/token端点,我得到 3 个 token - 一个访问 token 、一个 ID token 和一个刷新 token 。到目前为止一切顺利,因为我应该拥有我需要的东西。

这是我遇到困难的地方 - 使用 API Gateway Cognito User Pool Authorizer 控制台上的测试功能,我可以粘贴 ID token 并通过(在屏幕上解码 token )。但是当我粘贴访问 token 时,我得到 401 - unauthorized .

在我的 Cognito 设置中,我启用了 Authorization Code Grant仅限流量,使用 emailopenid范围(这似乎是 Cognito 允许的最小值,因为我在尝试保存时出错,但至少没有勾选这些)。

我是否需要添加一些特定范围才能让 API Gateway 使用访问代码授权请求?如果是这样,这些是在哪里配置的?

或者我错过了什么? API Gateway 是否仅允许将 ID token 与 Cognito 用户池授权方一起使用?

最佳答案

您可以使用具有适用于 id token 的相同授权方的访问 token ,但在用户池和 APIG 中需要完成一些额外的设置。

即使完成此额外设置,您也无法将内置授权方测试功能与访问 token 一起使用,而只能使用 id token 。来自 AWS 的典型 80% 解决方案!

要使用访问 token ,您需要在 App Integration -> Resource Servers 下的用户池中设置资源服务器。您使用什么并不重要,但我假设您使用 <site>.com对于标识符,您有一个名为 api 的范围.

没有转到APIG中的方法并输入Method Request为方法。假设这已经通过使用 id token 测试的授权方进行设置,然后添加 <site>.com/apiSettings -> OAuth Scopes部分。

只需添加 OAuth 范围,它将确保 token 现在必须是访问 token 并且不再接受 id token 。

这里有详细说明:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-enable-cognito-user-pool.html

关于oauth - AWS API Gateway - 将访问 token 与 Cognito 用户池授权方一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50404761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com