Spring Security создает сессию на основе токена JWT на новой странице - PullRequest
0 голосов
/ 20 декабря 2018

У меня Spring Boot приложение с REST endpoints, защищенное с Spring Security и JWT token.

Я использую SmartGWT приложение в качестве клиента, но теперь я хотел бы использовать plotly.js длясоздавать интерактивные сюжеты на сайте.

Для GWT нет привязок, поэтому я решил создать одну страницу (с графиком и некоторой формой для выбора условий отображения данных) в моем приложении Spring и перенаправить пользователя из приложения GWT в новоестраница с сюжетом.Но в клиенте у меня есть аутентификация с JWT token, поэтому я должен создать сеанс на основе JWT token.

Возможно ли это даже в Spring?Если так - как это сделать?

Вторая идея состояла в том, чтобы передать токен на новую страницу и обновить его в коде javascript, но мое приложение GWT также обновляет его, чтобы возник конфликт ...

Или, может быть, есть лучшее решение моей проблемы?Я бы предпочел не создавать привязки для plotly до GWT ...

Вот мой конфиг Spring Security:

private static final String FORM_BASED_LOGIN_ENTRY_POINT = "/api/auth/login";
private static final String TOKEN_BASED_AUTH_ENTRY_POINT = "/api/**";
private static final String TOKEN_BASED_AUTH_ENTRY_POINT_ADMIN = "/api/admin/**";
private static final String TOKEN_BASED_AUTH_ENTRY_POINT_ADMIN_SERVICE = "/api/admin/service/**";
private static final String TOKEN_REFRESH_ENTRY_POINT = "/api/auth/token";

[...]

protected void configure(HttpSecurity http) throws Exception {
    http
            .cors()
            .and()

            .csrf().disable()
            .exceptionHandling()
            .authenticationEntryPoint(this.authenticationEntryPoint)
            .and()

            .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.ALWAYS)
            .and()

            .authorizeRequests()
            .antMatchers(FORM_BASED_LOGIN_ENTRY_POINT).permitAll()
            .antMatchers(TOKEN_REFRESH_ENTRY_POINT).permitAll()
            .antMatchers(TOKEN_BASED_AUTH_ENTRY_POINT_ADMIN_SERVICE).hasRole(Role.SERVICE.name())
            .antMatchers(TOKEN_BASED_AUTH_ENTRY_POINT_ADMIN).hasAnyRole(Role.ADMIN.name(), Role.SERVICE.name())
            .antMatchers(TOKEN_BASED_AUTH_ENTRY_POINT).authenticated()
            .and()
            .addFilterBefore(buildAjaxLoginProcessingFilter(), UsernamePasswordAuthenticationFilter.class)
            .addFilterBefore(buildJwtTokenAuthenticationProcessingFilter(), UsernamePasswordAuthenticationFilter.class);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...