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

ibm*_*701 5 spring spring-security oauth-2.0 spring-boot spring-security-oauth2

我有2个应用程序:

  1. Spring应用程序1是客户端和资源服务器。
  2. Spring应用程序2是授权服务器。

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

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

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

dur*_*dur 4

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

6.6 OAuth 2.0 客户端

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

提供以下主要功能:

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

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 参考

11.2 OAuth 2.0 客户端

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

从高层次来看,可用的核心功能包括:

授权资助支持

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

  • Spring Security 5.2现已支持 (3认同)