我使用Spring授权服务器来实现OAuth2授权服务器。在切换到这个库之前,我正在使用spring-security-oauth2-autoconfigure
的Spring安全授权服务器。有了这个,我可以自定义令牌端点,以便在令牌端点中接收一个额外的参数(使用这个Spring OAuth2对令牌端点的每个请求生成访问令牌的支持)。
我通过实现AuthenticationKeyGenerator
接口实现了这一点。在这个实现中,我将授权服务器设计为根据用户凭据(用户名和密码)和一个附加参数发出令牌。
是否有办法定制这个新的spring授权服务器,以便在使用client_credentials时接收一个额外的参数?Grant_type,即在令牌端点接收Grant_type, client_id, client_secret和一个额外的参数,并发出一个与这三个元素相关的访问令牌?
到目前为止,我已经创建了一个CustomAuthenticationConverter
实现AuthenticationConverter
,一个CustomOAuth2AccessTokenGenerator
实现OAuth2TokenGenerator<OAuth2AccessToken>
。
这是实现这一目标的正确途径吗?
我找到了一种方法,通过配置accessTokenRequestConverter
来传播令牌端点请求中接收到的附加参数。这样,我就从HTTP请求(POST到令牌端点)获得了附加参数,并将其传播,直到将其包含在令牌本身中。除了accessTokenRequestConverter
,我还配置了authenticationProvider
,最后配置了CustomTokenGenerator
。我通过前两个传递附加参数,然后在CustomTokenGenerator
中生成时将其包含在令牌中。