我读过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令牌生成或令牌内容?
谢谢你的克莱夫。
1条答案
按热度按时间ttygqcqt1#
应用范围不能与用户权限混淆。作用域定义应用程序对用户资源的访问权限。因此,资源访问是两者的重叠:
检查用户是否有访问权限
检查应用程序是否具有作用域(用户访问权限)
示例
2个具有作用域的客户端:
2个有权限的用户:
因此,…
1.正如您所指出的,通过要求URI,AWS似乎强制实施了防冲突标识符。这不是一种常见的做法,也没有任何真正的安全好处,也没有得到AWS的验证,即您控制了资源。