Spring Boot的资源所有者密码凭证

时间:2020-01-06 20:05:07

标签: spring spring-boot spring-security oauth-2.0 spring-security-oauth2

我有一个与Spring Boot服务器(最新版本2.2.2.RELEASE)通信的旧式桌面应用程序。我正在使用OAuth2进行身份验证(由spring-boot-starter-oauth2-client提供)。我想避免更改客户端,因为它是旧版应用程序。它能够收集凭据并通过HTTP基本身份验证启动会话,然后在以下请求中保留该会话的cookie。

鉴于这种情况,我认为最好的选择是使用OAuth2资源所有者密码凭据授权。这样,我们就可以通过OAuth2令牌交换收集的凭据。我们有两种选择:

选项1:

修改客户端应用程序以通过Authorization标头使用访问令牌。这将需要对授权提供者进行初始调用,以通过令牌交换收集的凭据。

选项2:

继续使用Spring会话,并将有关OAuth客户端的信息存储在服务器中。

我发现该项目ALMOST做到了:https://github.com/jgrandja/spring-security-oauth-5-2-migrate。它有一个用messaging-client-password定义的客户端(authorization-grant-type: password),它将激活Spring Boot中的OAuth2资源所有者密码凭据授权。

它创建一个OAuth2客户端并将其信息存储在会话中,然后Spring可以在进一步的请求中使用该客户端。该项目的问题在于,它似乎仅在OAuth客户端用于发出HTTP请求(例如,对另一个服务进行调用的端点)且不向控制器提供身份验证时才起作用。您可以在此处找到有关此内容的更多信息:

克服此问题的自然思路是实现代理并在请求中使用OAuth2客户端。好吧,Spring已经提供了代理解决方案Spring Cloud Gateway。但是我不知道如何通过此设置来实现。

有什么见解?我是在正确思考还是应该采用其他方法?

0 个答案:

没有答案