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

时间:2018-11-01 10:00:58

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

我有2个应用程序:

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

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

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

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

1 个答案:

答案 0 :(得分:0)

Spring Security 5不支持它,请参阅Spring Security Reference

  

6.6 OAuth 2.0客户端

     

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

     

以下主要功能可用:

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

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

但是,您可以使用Spring Security OAuth2,请参见OAuth 2 Developers Guide

  

访问受保护的资源

     

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