我被困在最初的实施阶段。我没有分享下面的任何代码,因为我不知道应该选择哪种方法来实现。
我有以下要求:
-
给定一对
client_id
客户机对我的授权服务器端点保密(假设我从Postman点击了授权端点),它应该返回一个访问令牌来访问驻留在资源服务器中的API
-
此外,我还有一个基于Angular的web应用程序,它将使用组织凭据登录,并具有“管理员”、“用户”等特定角色,我需要根据这些角色限制web应用程序对API的访问
在阅读了许多关于不同oauth授权类型的文章后,我开始明白,对于第一个需求,最好使用clinet_credentials授权类型,因为它不需要用户身份验证。
但我有Spring安全依赖项,默认情况下,它会检查并验证用户。在没有用户身份验证的情况下,我如何实现我的第一个需求?
但是,在我的第二个需求中,员工数据库是由组织管理的。有了组织凭据,我需要进行身份验证,并且根据登录用户的角色,我必须执行角色管理,在Web用户界面中,我希望隐藏一些UI组件,并限制服务器中很少的API访问
我应该采用什么样的实现方法,在这种情况下必须使用什么样的grant_类型?
是否必须同时使用以下两个依赖项?他们是否以任何方式相互独立/依赖?
<dependency>
<groupId>org.springframework.security.oauth.boot</groupId>
<artifactId>spring-security-oauth2-autoconfigure</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
我询问的原因是,由于仅限于Spring Security,我被迫使用用户和密码进行身份验证,而在我的第一个要求中,我只希望提供客户机id和客户机机密以及客户机凭据授权类型。
请分享任何有用的链接,将与我的设计或任何样本代码。
提前谢谢!