我是spring oauth服务的新手,正在尝试将“user-id”作为附加头传递给/oauth2/token API,然后将其作为附加参数添加到使用JwtTokenCustomizerConfig.tokenCustomizer()生成的访问令牌中
我找不到任何可以帮助传递头的类,因为所有旧的类都不推荐使用,新的库也不熟悉。也找不到将动态值传递给accessToken中的set的方法。
以前的oauth2库,头文件用类
HeaderMapRequestWrapper extends HttpServletRequestWrapper
HeaderMapRequestWrapper requestWrapper = new HeaderMapRequestWrapper(request);
requestWrapper.addHeader(OAuth2ServerUtils.USER_ID, userId);
使用JwtAccessTokenConverter.enhance(),我们可以添加额外的参数:
String validUserId = request.getHeader(OAuth2ServerUtils.USER_ID);
additionalInfo.put(OAuth2ServerUtils.USER_ID, validUserId);
上面的oauth库已被弃用,目前有新的库,我想将userId作为header传递给/oauth2/token API,然后包含到生成的JWT令牌中。我可以在新的Spring授权服务器库中包含以下代码的静态键值对:
@Configuration
public class JwtTokenCustomizerConfig {
@Bean
public OAuth2TokenCustomizer<JwtEncodingContext> tokenCustomizer() {
return (context) -> {
if (OAuth2TokenType.ACCESS_TOKEN.equals(context.getTokenType())) {
context.getClaims().claims((claims) -> {
claims.put("userId", "1234");
});
}
};
}
}
1条答案
按热度按时间ivqmmu1c1#
您可以始终使用
RequestContextHolder
访问Spring中的当前HttpServletRequest
。例如:在
OAuth2TokenCustomizer
示例中,如果在请求中将头传递给/oauth2/token
端点,则这将起作用。