Выход из системы HTTP-аутентификации Quarkus

#quarkus

Вопрос:

В настоящее время я разрабатываю приложение с помощью Quarkus usig для аутентификации в форме http. После прочтения страницы «Аутентификация на основе форм» (https://quarkus.io/guides/security-built-in-authentication) Я столкнулся с проблемой на этапе выхода из системы. В документации не упоминается ни одна возможность выхода из текущего сеанса.

Поскольку Кваркус внутренне использует Vert.x, я попробовал следующее:

 @Path("/auth")
public class AuthController {

    @LoggerName("AuthController")
    Logger log;

    @ConfigProperty(name = "quarkus.http.auth.form.cookie-name")
    String COOKIE_NAME;

    @ConfigProperty(name = "quarkus.http.auth.form.location-cookie")
    String REDIRECT_COOKIE_NAME;

    @ConfigProperty(name = "quarkus.http.auth.form.login-page")
    String LOGIN_PAGE;

    @GET
    @Path("/logout")
    public void logout(@Context RoutingContext ctx) {
        var c1 = ctx.removeCookie(COOKIE_NAME);
        var c2 = ctx.removeCookie(REDIRECT_COOKIE_NAME);
        log.info(String.format("c1 = %s, c2 = %s", c1.getName(), c2.getName()));
        ctx.redirect(LOGIN_PAGE);
    }
}
 

Это работает не так, как ожидалось. В log.info хорошо регистрируется ( [AuthController] (executor-thread-0) c1 = MyCookieName, c2 = quarkus-redirect-location ), и перенаправление работает нормально. Однако сеанс продолжается.

Как я могу это исправить ?

Спасибо за помощь,

Ответ №1:

После нескольких исследований и попыток я нашел решение, которое заключается в том, чтобы сделать файл cookie недействительным с помощью Javascript с помощью:

 document.cookie = "MyCookieName=; Max-Age=0";
 

Это приведет к аннулированию файла cookie и перенаправлению на страницу входа в систему.