Programowe wykorzystanie Spring Security

ja używamFurtka dzięki projektowi Wicket Auth Project dla mojej warstwy prezentacji, dlatego zintegrowałem go z Spring Security. Jest to metoda nazywana przez Wicket dla uwierzytelniania dla mnie:

@Override
public boolean authenticate(String username, String password) {
    try {
        Authentication request = new UsernamePasswordAuthenticationToken(
                username, password);
        Authentication result = authenticationManager.authenticate(request);
        SecurityContextHolder.getContext().setAuthentication(result);
    } catch (AuthenticationException e) {
        return false;
    }
    return true;
}

Zawartość (wewnątrz) konfiguracji XML mojego Spring Security to:

<http path-type="regex">
    <form-login login-page="/signin"/>
<logout logout-url="/logout" />
</http>
<global-method-security secured-annotations="enabled" />
<authentication-manager alias="authenticationManager"/>
<authentication-provider user-service-ref="userService">
    <password-encoder ref="bcryptpasswordencoder" />
</authentication-provider>

Sekcja2.3.6. Ochrona przed atakami z sesji z dokumentacji referencyjnej mówi:

Ataki utrwalania sesji są potencjalnym ryzykiem, w którym złośliwy napastnik może utworzyć sesję, uzyskując dostęp do witryny, a następnie przekonać innego użytkownika do zalogowania się przy użyciu tej samej sesji (wysyłając im link zawierający identyfikator sesji jako parametr, dla przykład). Spring Security chroni się przed tym automatycznie, tworząc nową sesję, gdy użytkownik się zaloguje. Jeśli nie potrzebujesz tej ochrony lub koliduje z jakimś innym wymaganiem, możesz kontrolować zachowanie za pomocą atrybutu ochrony sesji, który ma trzy opcje:

migrateSession - tworzy nową sesję i kopiuje istniejące atrybuty sesji do nowej sesji. To jest domyślne.none - Nie rób nic. Oryginalna sesja zostanie zachowana.newSession - Utwórz nową „czystą” sesję bez kopiowania istniejących danych sesji.

Uwierzytelnianie działa, ale jako że jestem całkiem nowym użytkownikiem Spring Security, mam kilka pytań, na które również potrzebuję odpowiedzi:

Zwykle do logowania wysyłałem informacje uwierzytelniające doj_spring_security_check i pozwól Spring Security wykonać rzeczywisty kod uwierzytelniający. Chciałbym mieć ochronę przed atakami naprawczymi sesji, czy dostanę to, gdy wykonam programowe logowanie tak jak ja? A jeśli nie, co musiałbym zrobić, aby to uzyskać?Jak wykonać programowe wylogowanie?Jak będę używać programowego logowania i wylogowania, jak mogę wyłączyć Springa do przechwytywania tych adresów URL?

Aktualizacja: Wydaje się, że w przypadku ochrony przed atakami utrwalającymi sesję muszę wywołać metodę w klasie SessionUtils z podpisemstartNewSessionIfRequired(HttpServletRequest request, boolean migrateAttributes, SessionRegistry sessionRegistry).

Jak uzyskać instancję SessionRegistry, którą muszę przekazać? Nie mogę znaleźć żadnego sposobu, aby utworzyć dla niego identyfikator aliasu lub jak uzyskać jego identyfikator lub nazwę.

questionAnswers(6)

yourAnswerToTheQuestion