Запросите учетные данные при выходе из системы с помощью gitlab Oauth2, vaadin 24 и Spring-Boot.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Запросите учетные данные при выходе из системы с помощью gitlab Oauth2, vaadin 24 и Spring-Boot.

Сообщение Anonymous »

У меня возникли проблемы с реализацией функции выхода из системы в моем приложении Vaadin 24. Я использую OAuth2 с GitLab в качестве поставщика входа. Сам процесс входа в систему работает нормально: у меня есть пользовательская страница с типичной кнопкой Войти с помощью GitLab. Когда пользователь нажимает на нее в первый раз, он перенаправляется на страницу входа в GitLab. После ввода своих учетных данных они успешно перенаправляются на мою домашнюю страницу.
Проблема возникает, когда пользователь выходит из системы. Если они попытаются войти снова, вместо того, чтобы быть перенаправленными на страницу входа в GitLab и просить ввести свои учетные данные, они будут возвращены прямо на домашнюю страницу без необходимости повторного входа в систему. Мне нужно приложение, которое заставит пользователя пройти повторную аутентификацию в GitLab после выхода из системы.
Моя первая попытка выглядит так:

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

@Configuration
public class SecurityConfig extends VaadinWebSecurity {

@Override
public void configure (HttpSecurity http) throws Exception {
http.authorizeHttpRequests(auth ->{
auth.requestMatchers("/login").permitAll();
auth.requestMatchers("/register").permitAll();
auth.requestMatchers("/oauth2/**").permitAll();
})
.csrf(csrf -> {
csrf.disable();
})
.oauth2Login(o2 ->{
o2.loginPage("/login");
o2.successHandler(new SimpleUrlAuthenticationSuccessHandler("/home"));
})
.logout(logout -> logout
.logoutUrl("/logout")
.logoutSuccessUrl("/")
.invalidateHttpSession(true)
.clearAuthentication(true)
.addLogoutHandler(new SecurityContextLogoutHandler()));

super.configure(http);
}

}
В vaadin я использую Anchor

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

Icon icon = new Icon("vaadin", "power-off");
icon.setColor("white");

Anchor anchor = new Anchor("/logout", icon);
anchor.setRouterIgnore(true);
Когда я это делаю, vaadin пытается перейти на страницу выхода из системы, которой не существует.
Затем я попытался выйти из системы «вручную», добавив контроллер, который выглядит так: это:

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

@Controller
public class AppController{

@RequestMapping("/logout")
public void exit(HttpServletRequest request, HttpServletResponse response) {
new SecurityContextLogoutHandler().logout(request, null, null);
try {
response.sendRedirect(request.getHeader("referer"));
} catch (IOException e) {
e.printStackTrace();
}
}
}

При этом последнем подходе пользователь перенаправляется на мою персонализированную страницу входа, но при нажатии кнопки Войти с помощью Gitlab пользователю не запрашивается ввод данных. учетные данные.
Есть предложения?

Подробнее здесь: https://stackoverflow.com/questions/790 ... pring-boot
Ответить

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

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

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

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

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