Spring Security 5 OAuth2客户端密码授予类型
我有2个应用程序:
- Spring Application 1是客户端和资源服务器。
- Spring Application 2是授权服务器。
用户将能够登录应用程序1并访问其资源。我想实现以下流程:
用户以登录形式输入其凭据->应用程序1将使用用户凭据及其clientId
密码授予类型从应用程序2获取令牌->使用令牌访问应用程序1的资源。
问题是Spring Security 5是否支持客户端的密码授予类型?我在Spring Security 5实现中找到了所有的剩余授权类型,但没有找到密码。
回答:
Spring Security 5.1.x不支持它,请参阅Spring Security
Reference:
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:
OAuth 2.0客户端功能提供了对OAuth 2.0授权框架中定义的客户端角色的支持。
在较高级别,可用的核心功能包括:
- 授权码
- 刷新令牌
- 客户凭证
- 资源所有者密码凭证
以上是 Spring Security 5 OAuth2客户端密码授予类型 的全部内容, 来源链接: utcz.com/qa/433427.html