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

1bqhqjot  于 2022-10-08  发布在  其他
关注(0)|答案(1)|浏览(248)

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

1.我是否正确理解了资源服务器作用域的流程和用法:客户端应用程序向Cognito用户池请求JWT令牌(登录/授权发生)。令牌请求包含自定义作用域A,因此Cognito返回JWT访问令牌。在此之后,客户端应用程序使用获得的令牌向“资源服务器”(例如,向我们配置的API GW端点)发出rest API调用。API GW端点被设置为使用我们的Cognito用户池,因为授权者+范围被设置为自定义作用域A。因此,作用域在这里类似于“角色”或“权限”:如果客户端具有有效的JWT令牌+此令牌具有自定义作用域A Inside+API GW端点被设置为使用该作用域-则客户端应用程序被授权调用API GW端点。它有效地充当了终端的“基于资源的IAM策略”,但这里不涉及IAM。
1.我是否正确理解了**AWS Cognito资源服务器标识是任意字符串?**它不是事实上的资源服务器(我们的API GW)的URI。URI格式纯粹用于唯一性,在流中没有Cognito资源服务器标识符重要的地方,也没有以某种方式检查/验证的地方?另外,资源服务器标识符似乎不会影响JWT令牌生成或令牌内容?

谢谢你的克莱夫。

ttygqcqt

ttygqcqt1#

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

  • 检查用户是否有访问权限

  • 检查应用程序是否具有作用域(用户访问权限)

示例

2个具有作用域的客户端:

  • A:电子商务(产品:创建,产品:移除,订单:创建,订单:更新状态,订单:读取状态)
  • B:第三方订单跟踪器(订单:读取状态)

2个有权限的用户:

  • 客户(订单:创建:拥有,订单:读取状态:拥有)
  • 管理(产品:全部,订单:全部)

因此,…

  • 由于缺少用户权限,客户端A的客户放置/产品=拒绝
  • 由于缺少作用域…,客户端B=拒绝的管理员PUT/产品

1.正如您所指出的,通过要求URI,AWS似乎强制实施了防冲突标识符。这不是一种常见的做法,也没有任何真正的安全好处,也没有得到AWS的验证,即您控制了资源。

相关问题