可以使用OAuth2创建基于角色的应用程序吗?

时间:2019-08-02 15:53:02

标签: java angular spring spring-boot oauth-2.0

我要做的是使用Angular前端和具有OAuth2身份验证的Spring Boot后端创建应用程序。

问题是我不知道如何进入ROLES用户的前端,例如,我将能够在页面上显示基于角色的内容。
是的,在那里是OAuth在响应中提供的范围,但问题是这些范围是针对CLIENT的,而不是针对特定USER本身的。而CLIENT是我的前端(如果我错了,请纠正我),这基本上意味着每个操作我的应用程序(客户端)的用户都将具有相同的作用域(角色)。
此外,我可以在在SpringUserDetailsService的帮助下进行后端,然后将这些角色与@PreAuthorize等一起使用,但不能在前端使用。

作为一个例子,如果我只是简单地使用单个JWT,那么使用令牌本身,我会将用户名和角色都返回给前端。然后,我可以存储这些数据,并根据需要在前端使用它。

所以我要问的是,是否真的可能,这样做是否正确? 我怎么可能实现这种行为?

2 个答案:

答案 0 :(得分:1)

很好的问题Waterfall先生-OAuth不能解决此问题,最好通过API中的声明解决。 OAuth应该只处理身份验证。我在下面的帖子可能会帮助您考虑最佳分隔:https://authguidance.com/2017/10/03/api-tokens-claims/

简而言之,您将必须在OAuth处理完成后查找用户权限,例如角色。希望这对您有所帮助-随时提出任何后续问题。

答案 1 :(得分:1)

Spring开发者在YouTube上有a great video关于OAuth2 / OpenID Connect的信息。它显示了如何使用最新的Spring Security 5解决方案来实现资源服务器。

实现此目标的最简单,最好的方法可能是使用将提供所有用户管理内容的OpenID Connect服务器。市场上有很多解决方案。 Auth0和Okta是身份云,仅需少量费用即可提供其服务。另一方面,您拥有Keycloak,这是一台服务器,您可以将其安装在Docker或什至裸机上-它是免费的开放源代码。