Как добавить Custom Token Granter на новый сервер авторизации Spring

Здравствуйте, в настоящее время я использую старый сервер авторизации с зависимостью от срока службы spring-security-oauth2-autoconfigure , и теперь я хотел бы перейти на новый сервер авторизации Spring.

Мои вопросы заключаются в том, как я могу перехватить/переопределить Token Granter по умолчанию для новой службы авторизации Spring. В старой версии я просто расширил AbstractTokenGranter.SsoTokenGranter extends AbstractTokenGranter.

Я хотел бы вызвать другие службы во время создания токена и добавить пользовательские утверждения/полномочия к токену JWT с информацией о пользователе (роли, имя и т. д.).

Любые советы, как я могу это сделать?

1 ответ

я думаюOAuth2TokenCustomizerможет хорошо вписаться в ваш вариант использования.

      @Bean
public OAuth2TokenCustomizer<JwtEncodingContext> tokenCustomizer(
            OidcUserInfoService userInfoService) {
        return (context) -> {
            if (OidcParameterNames.ID_TOKEN.equals(context.getTokenType().getValue())) {
                OidcUserInfo userInfo = userInfoService.loadUser( // <2>
                        context.getPrincipal().getName());
                context.getClaims().claims(claims ->
                        claims.putAll(userInfo.getClaims()));
            }
        };
}

Существует раздел справочных документов и образец , который вы можете использовать в качестве справочного материала.