一尘不染

Spring Security 5 OAuth2客户端密码授予类型

spring-boot

我有2个应用程序:

  1. Spring Application 1是客户端和资源服务器。
  2. Spring Application 2是授权服务器。

用户将能够登录应用程序1并访问其资源。我想实现以下流程:

用户以登录形式输入其凭据->应用程序1将使用用户凭据及其clientId密码授予类型从应用程序2获取令牌->使用令牌访问应用程序1的资源。

问题是Spring Security 5是否支持客户端的密码授予类型?我在Spring Security 5实现中找到了所有的剩余授权类型,但没有找到密码。


阅读 1174

收藏
2020-05-30

共1个答案

一尘不染

Spring Security 5.1.x不支持它,请参阅Spring Security
Reference

6.6 OAuth 2.0客户端

OAuth 2.0客户端功能提供了对OAuth 2.0授权框架中定义的客户端角色的支持。

提供以下主要功能:

  • 授权码授予
  • 客户证书授予
  • WebClient Servlet环境的扩展(用于发出受保护的资源请求)

HttpSecurity.oauth2Client() 提供了许多用于自定义OAuth 2.0客户端的配置选项。

但是,您可以使用Spring Security OAuth2,请参阅《OAuth
2开发人员指南》

访问受保护的资源

通常,Web应用程序不应使用密码授予,因此,ResourceOwnerPasswordResourceDetails如果可以支持,请避免使用AuthorizationCodeResourceDetails。如果您迫切需要密码授予才能从Java客户端工作,请使用相同的机制配置您OAuth2RestTemplate的凭证并将凭证添加到AccessTokenRequest(这是一个Map并短暂使用),而不是ResourceOwnerPasswordResourceDetails(在所有访问令牌之间共享)。

或者您可以更新到Spring Security 5.2.x,请参阅Spring Security
Reference

11.2 OAuth 2.0客户端

OAuth 2.0客户端功能提供了对OAuth 2.0授权框架中定义的客户端角色的支持。

在较高级别,可用的核心功能包括:

授权赠款支持

  • 授权码
  • 刷新令牌
  • 客户凭证
  • 资源所有者密码凭证
2020-05-30