Spring Security Login Problem

freebeer

Mitglied
Guten Abend,

Ich möchte Spring Security in meine Anwedung integrieren. Leider komme ich aber gerde nicht weiter. Ich möchte den User auf eine Custom-Login Page leiten von der aus er/sie/es sich anmelden kann. Standard Prozedur. Ich komme bis zur Login Page, danach passiert aber nichts weiter, ich gebe die Benutzerdaten eines Benutzers an der in der Datenbank liegt und werde einfach direkt wieder auf die Login Seite geleitet. Das Login Template ist ein Standard Thymleaf Template. Jetzt muss ich einfach mal blöd fragen, Habe ich etwas falsch konfiguriert? Also scheinbar ja, ich komme aber leider einfach nicht darauf was. Vielleicht könnt ihr mir ja behilflich sein


Java:
@Configuration
public class SpringSecurityConfig {

      private final CustomUserDetailsService customUserDetailsService;
      private final CustomAuthenticationSuccessHandler customauthhandler;

    public SpringSecurityConfig(CustomUserDetailsService customUserDetailsService, CustomAuthenticationSuccessHandler customauthhandler) {
        this.customUserDetailsService = customUserDetailsService;
        this.customauthhandler = customauthhandler;
    }

    @Bean
    protected SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        
        http.csrf(csrf -> csrf.disable()).authorizeHttpRequests((authorize) -> {
            authorize.requestMatchers(publicUrl).permitAll();
            authorize.requestMatchers("/api/").permitAll();
            authorize.requestMatchers("/api/register/save").permitAll();
            authorize.anyRequest().authenticated();
        });
            http.formLogin(form-> form.loginPage("/api/login").permitAll()
    //            .defaultSuccessUrl("/api/"));
                .successHandler(customauthhandler)); 
            return http.build();   
            
    }

    @Bean
    AuthenticationProvider authenticationProvider() {
        DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider();
        authenticationProvider.setPasswordEncoder(passwordEncoder());
        authenticationProvider.setUserDetailsService(customUserDetailsService);
        return authenticationProvider;
    }
    
    @Bean
    PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

@Service
public class CustomUserDetailsService implements UserDetailsService {

    private UserRepository userRepository;
    
    
    public CustomUserDetailsService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }


    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        User user = userRepository.findByEmail(username);
        if(user == null) {
            throw new UsernameNotFoundException("user not found");
        }
        return new CustomUserDetails(user);
    }
@Component
public class CustomAuthenticationSuccessHandler implements AuthenticationSuccessHandler {

    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
            Authentication authentication) throws IOException, ServletException {
        UserDetails userDetails = (UserDetails) authentication.getPrincipal();
        if(userDetails == null) {
            System.out.println("kein User gefunden");
        }
        String username = userDetails.getUsername();
        System.out.println(username);
        boolean hasjobSeekerRole = authentication.getAuthorities().stream().anyMatch(r->r.getAuthority().equals("ADMIN"));
        boolean hasRecruiterRole = authentication.getAuthorities().stream().anyMatch(r->r.getAuthority().equals("USER"));
        if(hasRecruiterRole || hasjobSeekerRole){
            response.sendRedirect("/api/");
        }
    }
}
}[/CODE]

}[/CODE]
 

Nouser

Mitglied
Die CustomUserDetails Klasse hast du vergessen zu posten. Hier ist wohl am interessantesten, dass die Rollen des gefundenen Users in eine Collection aufgenommen werden. Wenn das alles klappt, dann solltest du anfangen zu loggen. Mit sout hast du ja schon minimal angefangen und das ist wohl besser als nichts.

Um das Problem zu finden musst du im CustomUserDetailsService anfangen (gefundenen User loggen), dann in CustomUserDetails weitermachen und den CustomAuthenticationSuccessHandler nicht vergessen. Wenn hier die Rollen nicht stimmen, dann wird nicht zu /api/ sondern dahin redirected was im Controller definiert ist. Die Rollen sehen übrigens verdächtig aus (hasjobSeekerRole <--> ADMIN, hasRecruiterRole <--> USER). Wenn das Drittcode ist, den du verändert hast, dann nachsehen, ob in der db Rollen wie JobSeeker oder Recruiter gespeichert sind und das korrigieren (register template). Das zeigt aber auch das Logging.
 

freebeer

Mitglied
Das wären die CustomUserDetails, das mit den JobSeeker und Recruiter habe ich angepasst, nur vergessen im Code an dieser Stelle umzubenenen.


Java:
public class CustomUserDetails implements UserDetails {

    private static final long serialVersionUID = 1L;
    
    private final User user;
    
    public CustomUserDetails(User user) {
        this.user = user;
    }

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        UserType usersType = user.getUserType();
        List<SimpleGrantedAuthority> authorities = new ArrayList<>();
        authorities.add(new SimpleGrantedAuthority(usersType.getUserType()));
        return authorities;
    }

    @Override
    public String getPassword() {
        return user.getPassword();
    }

    @Override
    public String getUsername() {   
        return user.getEmail();
    }

}
 

freebeer

Mitglied
Das wären die CustomUserDetails, das mit den JobSeeker und Recruiter habe ich angepasst, nur vergessen im Code an dieser Stelle umzubenenen.


Java:
public class CustomUserDetails implements UserDetails {

    private static final long serialVersionUID = 1L;
  
    private final User user;
  
    public CustomUserDetails(User user) {
        this.user = user;
    }

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        UserType usersType = user.getUserType();
        List<SimpleGrantedAuthority> authorities = new ArrayList<>();
        authorities.add(new SimpleGrantedAuthority(usersType.getUserType()));
        return authorities;
    }

    @Override
    public String getPassword() {
        return user.getPassword();
    }

    @Override
    public String getUsername() { 
        return user.getEmail();
    }

}
Ich habe es jetzt mit dieser Configuration zum laufen gebracht und zusätzlich das Template rausgeschmissen sieht in Postman ganz gut aus. Allerdings ist jetzt der DaoAuthenticationProvider nicht mehr dabei. Was genau macht dieser?
Java:
@Bean
    protected SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
       
        return http.csrf(customizer -> customizer.disable())
            .authorizeHttpRequests(auth->{
            auth.requestMatchers("/api/register/save").permitAll();
            auth.anyRequest().authenticated();  
        }).httpBasic(Customizer.withDefaults())
          .sessionManagement(session-> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
          .build();                                          
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Spring Security Login with Credentials Frameworks - Spring, Play, Blade, Vaadin & Co 0
K JSF 2.1 und Spring 3 Security Login mit RememberMe Frameworks - Spring, Play, Blade, Vaadin & Co 1
I Spring Security: Login und danach Methode aufrufen. Nur wie?? Frameworks - Spring, Play, Blade, Vaadin & Co 0
I Spring Security 404 Fehler bei Login -> Findet Seite nicht Frameworks - Spring, Play, Blade, Vaadin & Co 0
I Eigene Login Funktion bei Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
R Spring Security: Wie kommt 'UserDetails' an Username und Passwort ran? Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Spring Security: Wie den User dynamisch authentifizieren? Frameworks - Spring, Play, Blade, Vaadin & Co 8
R Spring Security: Authentication & Permissions Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Security: Run-as replacement Einsatzbereich? Frameworks - Spring, Play, Blade, Vaadin & Co 1
T Spring Security Config File anpassen Frameworks - Spring, Play, Blade, Vaadin & Co 1
S Spring Security mit oauth2 in lokaler Konfiguration principal mocken Frameworks - Spring, Play, Blade, Vaadin & Co 0
M Java Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Spring Security/Boot/Vaadin Cookie Problem bei iFrame Frameworks - Spring, Play, Blade, Vaadin & Co 4
8u3631984 Spring security - 403 bei Role Access Regel Frameworks - Spring, Play, Blade, Vaadin & Co 6
Dimax Spring Security CSRF-Token Frameworks - Spring, Play, Blade, Vaadin & Co 5
Dimax Spring Security Probleme Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot + Vaadin API Security Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Buchempfehlung Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 17
iman Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 13
S Spring Security deaktivieren Frameworks - Spring, Play, Blade, Vaadin & Co 10
S Spring Boot Security Frameworks - Spring, Play, Blade, Vaadin & Co 3
B Spring tools security mit JSP Frameworks - Spring, Play, Blade, Vaadin & Co 6
K Spring Security für Java SE Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Konfiguration von Spring Security für httpBasic Auth und jdbc Authentication. Frameworks - Spring, Play, Blade, Vaadin & Co 3
P Spring Security Token vs. Cookie Frameworks - Spring, Play, Blade, Vaadin & Co 0
I Security mit JBoss oder Spring oder... Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Security URLs erlauben Frameworks - Spring, Play, Blade, Vaadin & Co 0
F.S.WhiTeY Spring Security Constrain: Allow connection from localhost always Frameworks - Spring, Play, Blade, Vaadin & Co 1
F Spring Security Beans Frameworks - Spring, Play, Blade, Vaadin & Co 7
E Fehlermeldung von Spring Security beim Einloggen Frameworks - Spring, Play, Blade, Vaadin & Co 1
B Security mit Spring oder Seam Frameworks - Spring, Play, Blade, Vaadin & Co 6
M Problem mit spring security Frameworks - Spring, Play, Blade, Vaadin & Co 0
C JSF 2.0 Spring Security 3 User eingeloggt? Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Webanwendung und Spring Security Ratschlag Frameworks - Spring, Play, Blade, Vaadin & Co 6
T JSF - Spring Security Integration Frameworks - Spring, Play, Blade, Vaadin & Co 0
G Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Spring Security RMI Frameworks - Spring, Play, Blade, Vaadin & Co 2
G Spring Security Leerzeichen Frameworks - Spring, Play, Blade, Vaadin & Co 7
G Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 1
G Spring Security - Angemeldet bleiben Frameworks - Spring, Play, Blade, Vaadin & Co 4
G Spring Security Beispielprogramm [DRINGEND] Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Security 3 und JSF 2.0 Frameworks - Spring, Play, Blade, Vaadin & Co 5
G Spring Security Konfiguration Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Security Benutzer ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 3
P Spring Security mit Datenbank Frameworks - Spring, Play, Blade, Vaadin & Co 5
I Menüsteuerung mit Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 0
ARadauer Spring Security - Setting the SecurityContextHolder Contents Directly Frameworks - Spring, Play, Blade, Vaadin & Co 1
M JSF Navigation - Spring Security Logout Problem Frameworks - Spring, Play, Blade, Vaadin & Co 5
S Spring Security Tutorial ohne Web application Frameworks - Spring, Play, Blade, Vaadin & Co 4
MQue Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 12
R Daten-Synchronisation zwischen Libraries in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Spring Boot: Endpoint kann nicht gefunden werden (404) Frameworks - Spring, Play, Blade, Vaadin & Co 15
R Spring Boot läuft nicht auf Ubuntu Frameworks - Spring, Play, Blade, Vaadin & Co 6
OnDemand Spring Boot/Vaadin/Azure Session Speichern Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Spring Boot seltsame Aufrufe zu Google Frameworks - Spring, Play, Blade, Vaadin & Co 2
R Spring Boot Embedded mongo Frameworks - Spring, Play, Blade, Vaadin & Co 4
ExceptionOfExpectation Spring Boot Web Werten Übergabe Frameworks - Spring, Play, Blade, Vaadin & Co 2
R Mehrere WebSocket-Instanzen in Spring Boot dynamisch bereitstellen Frameworks - Spring, Play, Blade, Vaadin & Co 0
R Spring Boot Tabellenverknüpfung Frameworks - Spring, Play, Blade, Vaadin & Co 1
W Kotlin: DB-Relationen in Spring Boot Data / Hibernate Frameworks - Spring, Play, Blade, Vaadin & Co 6
ExceptionOfExpectation Spring Boot Thymeleaf Input Type=radio für Enum Property Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Ist es möglich in Spring Entity generische Listen verwenden Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
R Spring Boot sql Beziehungen Frameworks - Spring, Play, Blade, Vaadin & Co 12
8u3631984 Spring JPA Probleme beim SPeichern von Sets Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring JDBC Probleme beim Spaltennamen Frameworks - Spring, Play, Blade, Vaadin & Co 3
LimDul Spring-Batches in Docker über Rest starten/verfolgen Frameworks - Spring, Play, Blade, Vaadin & Co 0
ExceptionOfExpectation In Meiner Spring-Boot Applikation verlangt die Datenbank Wert für eine ID Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot Applikation und JHM Benchmark sowie ContextConfiguration in H2 Tests ich bekomme es nicht hin Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Tests in Spring-Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Eure Erfahrungen mit Primefaces und Spring - wer managed die Beans Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
thor_norsk Konfigurationsprobleme mit Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 9
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 1
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 13
L Spring Data und Rest Controller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Spring Data und Rest Conroller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring Amazon-SP-Api Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Aktualisiere Spring Controller Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Spring Data: Modellierung mit einer Embeddable bean Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
K Spring Boot OneToMany Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Spring Boot Docker Image erstellen und mit docker-compose konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Wann Spring Batch nutzen? Frameworks - Spring, Play, Blade, Vaadin & Co 1
P Spring Hessian Remote Beispiel Frameworks - Spring, Play, Blade, Vaadin & Co 20
8u3631984 Spring 2.7.8 Info Enpoint nicht zuerreichen Frameworks - Spring, Play, Blade, Vaadin & Co 1
gradlew.bat spring-boot:run funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
Zrebna Spring - Thymeleaf: Wieso wird gem. Fallunterscheidung entsprechende View nicht geladen? Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Spring UsernameNotFoundException(msg); auf der View msg ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Spring UsernameNotFoundException(Message) auf der View Message ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Cross-Origin beim Abrufen von Spring Endpoint Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot und Microservices Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0

Ähnliche Java Themen


Oben