AWS Cognito 资源服务器标识符和范围 资源服务器带来

AWS Cognito Resource server identifier and scopes Resource server brings

我读过 docs and seen this。努力将 Cognito + API GW + OAuth2 组合在一起。我的问题:

  1. 我是否正确理解资源服务器范围的流程和使用:客户端应用程序向 Cognito 用户池询问 JWT 令牌(login/authorization 发生)。令牌请求包含自定义范围 A,以便 Cognito 返回 JWT 访问令牌。在该客户端应用程序使用获得的令牌对“资源服务器”(例如,对我们配置的 API GW 端点)进行 REST API 调用之后。 API GW 端点设置为使用我们的 Cognito 用户池作为授权者 + 范围设置为自定义范围 A。因此此处的范围就像“角色”或“权限”:如果客户端有有效的 JWT 令牌 + 此令牌具有自定义范围 A inside + API GW 端点设置为使用该范围 - 然后客户端应用程序被授权调用 API GW 端点。实际上,它就像端点的“基于资源的 IAM 策略”,但此处不涉及任何 IAM。
  2. 我是否正确理解 AWS Cognito 资源服务器标识符是任意字符串? 它不是实际“资源服务器”的 URI(我们的 API GW ). URI 格式纯粹用于唯一性,并且在流程中没有 Cognito 资源服务器标识符重要或不知何故 checked/validated 的地方?此外,资源服务器标识符似乎不影响 JWT 令牌生成或令牌内容?

感谢澄清。

  1. 应用范围不应与用户权限混淆。范围定义 应用程序 对用户资源的访问权限。因此资源访问是两者的重叠:

    • 检查用户是否有访问权限
    • 检查应用程序是否具有作用域(访问用户访问权限)
  2. 通过要求 URI,AWS 似乎像您指出的那样强制执行抗冲突标识符。这不是一种常见的做法,实际上没有任何真正的安全优势,AWS 也未验证您控制了资源。