首页 文章

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

提问于
浏览
0

我有2个申请:

  • Spring Application 1是客户端和资源服务器 .

  • Spring Application 2是授权服务器 .

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

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

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

1 回答

  • 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 Client的配置选项 .

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

    访问受保护的资源作为一般规则,Web应用程序不应使用密码授予,因此如果您可以支持AuthorizationCodeResourceDetails,请避免使用ResourceOwnerPasswordResourceDetails . 如果你绝对需要密码授予来从Java客户端工作,那么使用相同的机制来配置你的OAuth2RestTemplate并将凭证添加到AccessTokenRequest(这是一个Map并且是短暂的)而不是ResourceOwnerPasswordResourceDetails(在所有访问令牌之间共享) .

相关问题