同一应用程序中的OAuth2客户端和资源服务器

时间:2020-01-19 12:42:30

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

我创建了一个具有许多REST函数的应用程序,这些函数在公共场所通过PHP进行调用。我在应用程序部分使用Spring Boot。

我现在想通过通过Oauth2协议提供的授权令牌进行的基于角色的访问来保护我的应用程序。为了实现令牌,我实现了一个监听8081端口的授权服务器,但是对于客户端和资源服务器,我有点困惑。对于授权部分,我正在使用MySQL数据库来存储令牌并获取客户端凭据。

据我所知,我的资源服务器也是客户端应用程序。我要实现的是:

  1. 最终用户通过自定义的PHP登录页面登录-我的spring boot应用程序未包含该页面。该页面将充当OAuth2登录页面。
  2. 如果成功登录,授权服务器将返回一个令牌和一个刷新令牌。
  3. 每次用户尝试访问特定页面时,都会将授权令牌(通过PHP代码)传递给REST标头,如果用户具有适当的权限,它将自动显示结果。

我想知道的是我需要添加到应用程序中的配置(在端口8080上监听),以便(a)联系授权服务器(请参阅application.properties),(b)通过授权REST标头的令牌,以检查用户权限。现在,我具有一个基本的结构,在一个程序包中具有控制器(多个类),在另一个程序包中具有配置。

请您说明一下:(a)我需要在我的应用程序中同时扩展ResourceServerConfig和WebServerConfig,如果是,请分别扩展;以及(b)我如何将令牌传递给每个rest函数-如果我理解正确,我需要使用EnableOAuth2Sso批注,但是我不确定是否需要在每个不同的Controller类中执行此操作。另外,如果您可以提供一些教程,那将是很棒的。我读了很多,但可能在配置方面错过了最好的。

先谢谢您。

请在application.properties下面找到。

我的应用程序的Application.properties

#OAuth2 configuration
security.oauth2.client.client-id=secrettest
security.oauth2.client.client-secret=@test
security.oauth2.client.access-token-uri=http://localhost:8081/oauth/token
security.oauth2.resource.token-info-uri=http://localhost:8081/oauth/check_token
security.oauth2.client.user-authorization-uri=http://localhost:8081/oauth/authorize
server.servlet.session.cookie.name=KSESSION

0 个答案:

没有答案