У меня 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);
}