Aws appsync AWS AppSync OIDC

Aws appsync AWS AppSync OIDC,aws-appsync,Aws Appsync,我正在使用AWS AppSync和Key斗篷作为OIDC提供程序,并将clientID留空。这意味着我可以使用任何clientId和客户端密码生成访问令牌,并开始向我的AppSync GraphQL端点发出请求(查询或变异) 但是,我必须问……我如何使用jwt令牌中的作用域定义细粒度访问控制。我真的不明白,除了利用以前在Key斗篷或任何其他oidc提供商中设置的现有客户端之外,此授权流还能带来什么好处 那么…在AppSync中使用oidc auth的真正好处是什么?我错过了什么重要的东西吗?任何

我正在使用AWS AppSync和Key斗篷作为OIDC提供程序,并将clientID留空。这意味着我可以使用任何clientId和客户端密码生成访问令牌,并开始向我的AppSync GraphQL端点发出请求(查询或变异)

但是,我必须问……我如何使用jwt令牌中的作用域定义细粒度访问控制。我真的不明白,除了利用以前在Key斗篷或任何其他oidc提供商中设置的现有客户端之外,此授权流还能带来什么好处

那么…在AppSync中使用oidc auth的真正好处是什么?我错过了什么重要的东西吗?任何反馈感谢


谢谢

您可以访问解析程序映射模板中$ctx.identity.claims映射中的OIDC声明,基本上可以使用这些模板执行细粒度的访问控制逻辑。想象一下,如果您有一个groups声明,表示您的用户属于一个组(如Admin),那么您可以基于此在映射模板中编写自定义逻辑

下面是一个如何做到这一点的示例(它使用Cognito,但OIDC应该非常类似)


您能解释一下您的建议是否足够吗?我看到一些人使用Cognito用户池和身份池?与OIDC相比,使用Cognito的优势是什么?Cognito的基础是一个OIDC提供者。也就是说,它提供了包含声明的JWT令牌。在AppSync中,您可以在解析器代码中访问来自OIDC提供程序或用户池的两个声明。AppSync与用户池的集成更加紧密,因为AppSync提供了指令,您可以将组声明指定为参数。看这里。下面是我以前关于用户池和身份池之间差异的一个答案@Inout Trestian,是否可以将我的IDP中的所有用户导入Cognito用户池,并将其声明映射到用户池组等?让我困惑的是,如果我可以使用OIDC,那么使用用户池OIDC有什么意义?