首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在oauth2身份验证之上实现用户权限

如何在oauth2身份验证之上实现用户权限
EN

Stack Overflow用户
提问于 2019-12-17 00:52:36
回答 2查看 5K关注 0票数 7

在使用IdP通过oauth2对用户进行身份验证的web应用程序中,实现用户权限(客户端和服务器端)的标准/推荐选项是什么?

通过“用户权限”,我指的是用户在应用程序中执行的操作。

例如,假设应用程序有一个"admin“页面,该页面用于管理应用程序的某些设置,只有特定用户才能进入。其中一些用户只允许查看当前设置,而其他用户也被允许更改设置(可能只允许其中一些设置)。

据我所知,oauth2中的“作用域”的概念可能用于实现这样的要求,因此,一个只允许查看“app:admin:view”页面的用户将具有一个app:admin:view作用域,而一个也可以编辑设置的用户将拥有一个app:admin:some-setting:edit作用域。

但是,在大多数大型身份提供者服务中,管理这些作用域及其分配给用户的任务似乎相当繁琐。

这是一个很好的解决办法吗?如果是这样的话,是否有任何产品/服务与oauth2国内流离失所者集成,帮助管理权限并将其分配给用户(例如,具有良好的直观UI)?如果没有,是否有任何既定的方法来处理这种情况?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-29 19:13:03

范围

我不会为此目的使用OAuth2范围。原因是,OAuth2作用域是为了限制应用程序对用户资源可以做什么,而不是限制用户在应用程序中可以做什么。

例如,如果我编写了一个web应用程序,向用户展示他们在Google文档中使用的语言,那么它需要从Google获得的权限来读取用户的Google文档,但不需要读取他们的日历。因此,应用程序将从Google获得一个OAuth2令牌,该令牌的作用域为读文档特权,而不是读日历特权或任何其他不必要的特权。

使用作用域来传递有关用户权限的信息(与应用程序权限相反)的具体缺点是,如果您想实现类似上述的功能,应用程序可以在应用程序中获得对用户资源的不同级别的访问,同时以多种方式使用OAuth2作用域可能会让人感到困惑。如果您希望通过API将应用程序中的功能公开给您的客户以集成到他们自己的应用程序中,这可能会成为一个问题。

OAuth2委托与OpenID连接身份验证

您刚才提到您正在使用OAuth2进行身份验证。OAuth2是用来授权的,不用于身份验证。OAuth2访问令牌不表示经过身份验证的用户OpenId连接 ID令牌。

AWS认知用户组

我喜欢使用白兰地进行身份验证。它为您跟踪用户,因此您不需要用户数据库,并对它们进行身份验证。它与Google和Facebook等外部身份提供者集成在一起。对于跟踪不同类型用户的用例,可以使用认知群组这里是一个有例子的博客文章。

基本上,您将从科尼图获得一个ID令牌,您的客户端或服务器可以读取ID令牌来确定用户的组(管理、常规用户等),并采取相应的行动。这里是从令牌读取组的一个示例。

票数 9
EN

Stack Overflow用户

发布于 2019-12-31 16:51:40

OAuth2实现中的授权服务器返回一个JWT (作为访问令牌)。您可以让授权服务器返回某些自定义“声明”中的用户访问信息。Security OAuth2支持这一点。教程是这里

但是,如果用户有一个很长的访问信息列表,使得JWT的大小超过4KB,那么您将无法将令牌存储在cookie中(正如我在其他答案这里这里中解释的那样,cookie通常被用作在客户端存储令牌的安全选项)。在这种情况下,您可以拥有一个单独的微服务,它将返回给定用户名的用户访问信息,并且可以在其他服务中本地缓存该信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59366200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档