在使用oauth2
通过IdP对其用户进行身份验证的web应用程序中,实现用户权限(客户端和服务器端)的更标准/推荐的选项是什么?
我所说的“用户权限”指的是用户在应用程序中可以或不可以执行的操作。
例如,假设应用程序有一个“管理”页面,用于管理应用程序的一些设置,只有特定的用户才允许进入。其中一些用户只被允许查看当前设置,而其他用户也被允许更改设置(可能只有其中一些)。
据我所知,oauth2中的“作用域”概念可能用于实现这样的需求,因此,例如,只允许查看“admin”页面的用户将具有app:admin:view
作用域,而还可以编辑设置的用户将具有app:admin:some-setting:edit
作用域。
但是,在大多数大型标识提供者服务中,管理这些作用域以及将它们分配给用户的任务似乎相当繁琐。
那会是个好的解决办法吗?如果是这样的话,是否有任何产品/服务可以与oauth2 IDP集成,并帮助更容易地管理权限和将权限分配给用户(例如,使用一个漂亮的直观UI)?如果没有,是否有任何既定的方法来处理这类情况?
我不会为此目的使用OAuth2作用域。原因是OAuth2作用域用于限制应用程序可以用用户的资源做什么,而不是限制用户可以在应用程序中做什么。
例如,如果我编写了一个web应用程序,向用户显示他们在谷歌文档中使用的语言,那么它需要从谷歌委派的特权才能读取用户的谷歌文档,而不是读取他们的日历。因此,应用程序将从Google获得一个OAuth2令牌,该令牌的范围为读文档特权,而不是读日历特权或任何其他不必要的特权。
使用作用域来携带有关用户权限(与应用程序权限相反)的信息的具体缺点是,如果您想实现类似于上面的内容,即应用程序可以对应用程序中的用户资源进行不同级别的访问,那么尝试以多种方式同时使用OAuth2作用域可能会造成混乱。如果您希望通过API向客户公开应用程序中的功能以集成到他们自己的应用程序中,这可能会成为一个问题。
您提到您正在使用OAuth2进行身份验证。OAuth2用于委托授权,而不是身份验证。OAuth2访问令牌并不表示经过身份验证的用户。OpenId连接ID令牌。
我喜欢使用AWS Cognito进行身份验证。它为您跟踪您的用户,因此您不需要用户数据库,并处理对他们的身份验证。它与谷歌和脸书等外部身份提供商集成。对于跟踪不同类型用户的用例,可以使用认知组。这里有一篇博客文章,里面有一个例子。
基本上,您将从Cognito获得一个ID令牌,您的客户机或服务器可以读取该ID令牌来确定用户的组(admin、regull-user等)并相应地采取行动。下面是一个从令牌读取组的示例。
注意:我的问题与Spring-Boot REST API+web应用程序的安全性有关。
我正在尝试使用OAuth2实现开发一个带有Spring Security性的rest api。但是如何删除基本身份验证呢。我只想向body发送用户名和密码,并在postman上获取令牌。 要删除基本身份验证,并从邮递员的get token中发送body标记中的用户名密码吗 我遇到了一些问题{"错误":"未经授权","error_description":"没有客户端身份验证。尝试添加适当的身份验证
LDAP的基础是什么?如果在配置期间没有给出任何基数。 我必须从基于web的应用程序验证/验证用户,并且我有java代码。 但是我需要为此建立基础(变量),我已经让另一个团队告诉我基础,他们说我们没有在LDAP上定制任何东西。LDAP的默认基数是什么?
如何在Spring Security中实现基于JWT的身份验证和授权 我试图在我的Spring启动应用程序中实现基于jwt的身份验证和授权。我遵循了这里写的教程。但是它在我的应用程序中没有做任何事情。它不返回jwt令牌,而是我被验证了,我的请求得到了满足。我是Spring安全新手。这是我的代码。 我希望我的应用程序返回jwt令牌,并且使用该令牌必须授权请求。 这是我的密码。 ilter.java
null 我研究了OAuth2隐式授权,但它要求用户在成功验证后批准/拒绝应用程序。它在我的情况下不起作用,因为我同时拥有应用程序和API。 我查看了OAuth2密码授权,它并不完美,因为我需要公开client_id/client_secret。 我关注OAuth2的原因是因为该API最终将是公开的。 忘记OAuth2,在用户发布用户名/密码时手动生成access_token(在本例中,当API公