Почему персонаж ';'добавлен конец запроса в OAuth2 - PullRequest
0 голосов
/ 16 апреля 2019

Существуют приложения Сервер авторизации (UAA), Сервер ресурсов и Шлюз, которые работают правильно.Сценарий для аутентификации authorization_code.В первый раз после аутентификации к концу запроса добавляется ;jesessionid=[value], поэтому его результатом является исключение из HttpFirewall приложения Gateway из-за наличия ';' в запросе. У меня вопрос, что это такое и почему jessionid добавляется в конце запроса?и как это можно адаптировать с HttpFirewall. Я нашел способ обойти, но я знаю, что есть некоторые риски.Это выглядит так:

@Bean
public HttpFirewall allowUrlEncodedSlashHttpFirwall() {
    StrictHttpFirewall firewall = new StrictHttpFirewall();
    firewall.setAllowSemicolon(true);
    return firewall;
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .csrf()
            .disable()
            .headers().cacheControl().disable()
            .and()
            .headers()
            .cacheControl()
            .disable()
            .frameOptions()
            .sameOrigin()
            .and()
            .httpBasic().disable()
            .authorizeRequests()
            .requestMatchers(EndpointRequest.toAnyEndpoint()).permitAll()
            .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
            .mvcMatchers("/uaa/**", "/login**", "/favicon.ico", "/error**").permitAll()
            .anyRequest().authenticated()
            .and()
            .logout()
            .permitAll();
}

@Override
public void configure(WebSecurity web) throws Exception {
    super.configure(web);
    web.httpFirewall(allowUrlEncodedSlashHttpFirwall());
}

Как и в приведенной выше конфигурации, ; пропускается, но это неверно и имеет некоторые риски.

Как правильно и как решить эту проблему?

...