我有2个应用程序:
用户将能够登录应用程序1并访问其资源。 我想实现以下流程:
用户以登录形式输入其凭据->应用程序1将使用用户凭据及其具有密码授予类型的clientId
从应用程序2中获取令牌->使用令牌访问应用程序1的资源。
问题是Spring Security 5是否支持客户端的密码授予类型?我在Spring Security 5实现中找到了所有的剩余授权类型,但没有找到密码。
答案 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
(在所有访问令牌之间共享。)