【发布时间】:2018-10-28 12:11:29
【问题描述】:
我正在配置一个具有各种前端(移动和 Web 应用程序)和一个 API 后端的应用程序,由 Lambda 提供支持并通过 AWS API Gateway 访问。
由于我计划使用 Cognito 对用户进行身份验证和授权,因此我在我的 API 网关和几个 API 方法上设置了 Cognito 用户池授权方。
对于这样的架构,从 OAuth 的角度来看,我的应用程序(例如 iOS 或 Vue.js 应用程序)是客户端应用程序,而我的 API 网关后端是资源服务器,这似乎是合乎逻辑的。基于this Auth0 forum post,我似乎很清楚应该在我的客户端应用程序中使用一个 ID 令牌,并传递一个访问令牌来授权我的 API 网关资源。
当我点击 Cognito /oauth2/authorize 端点以获取访问代码并使用该代码点击 /oauth2/token 端点时,我得到 3 个令牌 - 一个访问令牌、一个 ID 令牌和一个刷新令牌。到目前为止一切顺利,我应该有我需要的。
这是我遇到困难的地方 - 使用 API Gateway Cognito 用户池授权器控制台上的测试功能,我可以粘贴 ID 令牌并通过(在屏幕上解码令牌)。但是当我粘贴访问令牌时,我得到401 - unauthorized。
在我的 Cognito 设置中,我仅启用了 Authorization Code Grant 流,具有 email 和 openid 范围(这似乎是 Cognito 允许的最小值,因为我在尝试保存时出现错误,至少没有勾选这些) .
我是否需要添加一些特定范围才能让 API Gateway 使用访问代码授权请求?如果是这样,这些配置在哪里?
或者我错过了什么? API 网关是否只允许 ID 令牌与 Cognito 用户池授权器一起使用?
【问题讨论】:
标签: oauth oauth-2.0 aws-api-gateway amazon-cognito aws-cognito