我想根据令牌端点请求中发送的授权代码自定义访问令牌。
我按照 Spring Boot Oauth2 文档执行此操作。令牌自定义
具体来说,我正在使用 OAuth2TokenCustomizer 自定义访问令牌,并且需要访问作为 /token 端点调用的一部分发送的授权代码。
情况是这样的
将 HttpServletRequest 注入 CustomTokenGenerator 类并从请求参数中访问授权代码,如下所述
@Component
@RequiredArgsConstructor
public class TokenCustomizer implements OAuth2TokenCustomizer<JwtEncodingContext> {
private final HttpServletRequest httpServletRequest;
@Override
public void customize(JwtEncodingContext context) {
if (OAuth2TokenType.ACCESS_TOKEN.equals(context.getTokenType())) {
// get it from parameter
String authorizationCode = httpServletRequest.getParameter("code");
if (authorizationCode != null) {
context.getClaims().claim("userName", "John Doe");
}
}
}
}
创建自定义的OnceperRequestFilter,并获取请求参数并将其设置为属性“authCode”
然后在 TokenCustomizer 中,代替 getParameter() 使用 getAttribute()
任何建议、参考资料或示例将不胜感激!
- 哪种方法更符合 Spring 的最佳实践 安全还是 Java EE? (主要是关于参数和属性)
使用自定义声明键值对https://docs.spring.io/spring-authorization-server/reference/guides/how-to-custom-claims-authorities.html#custom-claims。它喜欢你所说的
attribute
.
- 使用时是否有任何性能或架构权衡 属性与参数?
官方没有关于参数使用的文档,无需在这里考虑权衡。
- 是否有官方参考资料或指南可以证明这一点的合理性 接近另一个?
没有关于使用参数的官方文档。使用这种方法https://docs.spring.io/spring-authorization-server/reference/guides/how-to-custom-claims-authorities.html#custom-claims