Опустить дополнительные параметры в URI перенаправления - PullRequest
1 голос
/ 11 апреля 2019

Я использую сервер аутентификации Oauth2 с использованием Spring.После аутентификации мне нужно сгенерировать JWToken с некоторой дополнительной информацией.

У меня есть AuthorizationServerConfigurerAdapter конфигурация:

@Configuration
public class AuthServerConfig extends AuthorizationServerConfigurerAdapter {

    //extra code omitted

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.inMemory()
            .withClient("angular")
            .secret(passwordEncoder().encode("the_secret"))
            .autoApprove(true)
            .scopes("")
            .authorizedGrantTypes("implicit", "password", "refresh_token")
            .redirectUris("http://localhost:4200");
    }

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
        endpoints.authenticationManager(manager)
                .accessTokenConverter(new CustomJwtTokenEnchancer())
                .tokenStore(tokenStore());
    }

}

My CustomJwtTokenEnhancer добавит некоторую информацию о профилях пользователей:

public class CustomJwtTokenEnhancer extends JwtAccessTokenConverter {
    //extra code omitted

    @Override
    public OAuth2AccessToken enhance(
            OAuth2AccessToken accessToken,
            OAuth2Authentication auth) {

        final Map<String, Object> additionalInfo = new HashMap<>();
        additionalInfo.put("profiles", authService.getProfiles(auth.getName()));
        additionalInfo.put("activeProfile", authService.getActiveProfile(auth.getName()));

        ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);

        return super.enhance(accessToken, authentication);
    }
}

Генерация токена в порядке, но URI перенаправления будет иметь всю дополнительную информацию в качестве параметров:

localhost:4200/#access_token={token}&token_type=bearer&expires_in=21599&scope=&profiles=%5B200022032,%201786154,%201616954,%201666754%5D&activeProfile=1666754&jti=e0677289-94a5-47da-a00e-b63c3d4c0598

Это проблема, потому чтоу некоторых пользователей много профилей, и из-за этих случаев мне нужно было увеличить max-http-header-size.

Поскольку это дублируемая информация, я действительно хотел бы исключить ее из URI.Есть ли способ добиться этого?

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