Выход из системы не возвращает принципала после обновления загрузки Spring до 3.1.9 или 3.5.8.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Выход из системы не возвращает принципала после обновления загрузки Spring до 3.1.9 или 3.5.8.

Сообщение Anonymous »

У меня есть приложение с весенней загрузкой 3.1.4 и использование okta для аутентификации.
Я хочу обновить Spring-Boot до 3.5.8. Я могу запустить приложение в первый раз. Во время первого выхода из системы запрос возвращает значение null для getPrincipal(). Следовательно, выход из системы происходит правильно.

Код: Выделить всё

private void oktaLogout(HttpServletRequest request) {
OidcUser oidcUser = getOidcUser(request);
if (oidcUser == null) return;
Map claims = oidcUser.getClaims();
if(claims.keySet().contains("iss") && claims.get("iss") != null) {
String issuer = claims.get("iss").toString();
String logoutUrl = issuer + "/v1/logout?id_token_hint=" + oidcUser.getIdToken().getTokenValue() + "&post_logout_redirect_uri=" + appSettings.getLogoutUrl();
request.getSession().invalidate();
request.getSession().setAttribute("logoutUrl", logoutUrl);
}
}

public OidcUser getOidcUser(HttpServletRequest request) {
Principal principal = request.getUserPrincipal();

if (principal == null) return null; //Here it returns null during logout
OAuth2AuthenticationToken token = (OAuth2AuthenticationToken) principal;

return (OidcUser) token.getPrincipal();
}

Код: Выделить всё

SecurityConfig.java

@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.csrf((csrf) -> csrf.disable())
.authorizeHttpRequests( (authorize) -> authorize
.requestMatchers("/**", "/app/**", "/signout/**", "/error/**")
.authenticated())
.oauth2Login(Customizer.withDefaults())
.oauth2Client(Customizer.withDefaults())
;
return http.build();
}
}
if (принципал == null) возвращает ноль; // здесь возвращается значение null, поэтому, если блок в oktaLogout не выполняется.
Из-за этого я не смог запустить свое приложение со второго раза с панели управления okta и получил сообщение «Доступ к xxxx запрещен. У вас нет прав пользователя для просмотра этой страницы».
Эта проблема возникает с версии весенней загрузки 3.1.9, до 3.1.8 она работает нормально.
В журнале приложения ошибок нет, запрос на повторный вход не доходит до окты. Я проверил системный журнал okta.
Может кто-нибудь мне помочь?

Подробнее здесь: https://stackoverflow.com/questions/798 ... 9-or-3-5-8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»