Springboot autentication slutar efter deployat

Permalänk

Springboot autentication slutar efter deployat

Tjena Allihopa!

Jag har fått ett skit skumt problem, och tänkte om nån har koll

Jag har byggt en enkel front+ backend med springboot security. Det skumma är att autentication slutar helt att funka när jag deployade backenden.

Min mapping, som funkar utmärkt i local miljö, men när jag deployade den till digital ocean så sysar den ut "null" fast inloggad

@GetMapping("/check")
public ResponseEntity<?> CheckIfAuthenticated(Authentication authentication) {
System.out.println(authentication);
if (authentication != null && authentication.isAuthenticated()) {
String username = authentication.getName();
Users user = userService.findByUsername(username).orElse(null);

Map<String, Object> response = new HashMap<>();
response.put("authenticated", true);
response.put("username", username);
response.put("isAdmin", user.getIsAdmin());
return ResponseEntity.ok(response);
} else {
Map<String, Object> response = new HashMap<>();
response.put("authenticated", false);
return ResponseEntity.ok(response);
}

}
Jag kan komma med mer information om det behövs, men jag förstår verkligen inte vart det tar stopp.

Permalänk
Medlem

Felet ligger sannolikt i någon interceptor innan din Controller. Hur har du konfigurerat Spring Security?

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Skrivet av noMad17:

Felet ligger sannolikt i någon interceptor innan din Controller. Hur har du konfigurerat Spring Security?

Här är min config fil för Spring security

@Configuration
@EnableWebSecurity
public class SecurityConfig {

private final JpsUserDetailService jpsUserDetailService;

public SecurityConfig(JpsUserDetailService jpsUserDetailService) {
this.jpsUserDetailService = jpsUserDetailService;
}

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {

http.csrf(csrf -> csrf.disable()).authorizeHttpRequests((request) -> request
.anyRequest().permitAll())

.userDetailsService(jpsUserDetailService)

.formLogin(formLogin -> formLogin
.defaultSuccessUrl("https://lobster-app-2ifzk.ondigitalocean.app/") // Redirect to this address after login
.permitAll()) // Allow everyone to access the login page
.logout(logout -> logout
.logoutUrl("https://lobster-app-2ifzk.ondigitalocean.app/")
.logoutSuccessUrl("/")
.invalidateHttpSession(true)
.deleteCookies("JSESSIONID"));

return http.build();
}

@Bean
PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}

}

Permalänk
Medlem
Skrivet av Mrsluggans:

Här är min config fil för Spring security

@Configuration
@EnableWebSecurity
public class SecurityConfig {

private final JpsUserDetailService jpsUserDetailService;

public SecurityConfig(JpsUserDetailService jpsUserDetailService) {
this.jpsUserDetailService = jpsUserDetailService;
}

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {

http.csrf(csrf -> csrf.disable()).authorizeHttpRequests((request) -> request
.anyRequest().permitAll())

.userDetailsService(jpsUserDetailService)

.formLogin(formLogin -> formLogin
.defaultSuccessUrl("https://lobster-app-2ifzk.ondigitalocean.app/") // Redirect to this address after login
.permitAll()) // Allow everyone to access the login page
.logout(logout -> logout
.logoutUrl("https://lobster-app-2ifzk.ondigitalocean.app/")
.logoutSuccessUrl("/")
.invalidateHttpSession(true)
.deleteCookies("JSESSIONID"));

return http.build();
}

@Bean
PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}

}

Jag ser inget som omedelbart sticker ut som konstigt i din config.
Hur är din JpsUserDetailService implementerad?

Använd gärna [code][/code] runt din kod som du klistrar in här så att formateringen bevaras.
Det gör det lättare att läsa din kod.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Skrivet av noMad17:

Jag ser inget som omedelbart sticker ut som konstigt i din config.
Hur är din JpsUserDetailService implementerad?

Använd gärna [code][/code] runt din kod som du klistrar in här så att formateringen bevaras.
Det gör det lättare att läsa din kod.

Här kommer userDetails, och om du vill ha titt på hela repot så kommer här
https://github.com/Mrsluggan/TimeTrackR-Backend/

package com.TimeTrackR.TimeTrackR.Service; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import com.TimeTrackR.TimeTrackR.Model.Users.Model.UserDto; import com.TimeTrackR.TimeTrackR.Model.Users.Service.UserService; @Service public class JpsUserDetailService implements UserDetailsService { private final UserService userService; public JpsUserDetailService(UserService userService) { this.userService = userService; } @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { return userService.findByUsername(username) .map(UserDto::new) .orElseThrow(() -> new UsernameNotFoundException("Error")); } }

Permalänk
Medlem
Skrivet av Mrsluggans:

Här kommer userDetails, och om du vill ha titt på hela repot så kommer här
https://github.com/Mrsluggan/TimeTrackR-Backend/

package com.TimeTrackR.TimeTrackR.Service; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import com.TimeTrackR.TimeTrackR.Model.Users.Model.UserDto; import com.TimeTrackR.TimeTrackR.Model.Users.Service.UserService; @Service public class JpsUserDetailService implements UserDetailsService { private final UserService userService; public JpsUserDetailService(UserService userService) { this.userService = userService; } @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { return userService.findByUsername(username) .map(UserDto::new) .orElseThrow(() -> new UsernameNotFoundException("Error")); } }

Inte helt lätt att se vad som är fel enbart genom att titta på koden. Jag ser inte att du har någon kod för inloggning? Är du säker på att appen kommer åt din databas och att det finns en användare med tomt username (som det ser ut som att din frontend använder)?

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk

Tjo! Jag har PM:at dig om en kanske jätteviktig sak.

Ditt GitHub-repo verkar endast vara backend? Så någonting i frontend-repot som spökar kanske som annars fungerar lokalt?

Mvh,
WKL.

Visa signatur

"Den säkraste koden är den som aldrig skrivs"

Permalänk

Hittade en ledtråd, cookien som jag vill komma åt blir blockerad

Det är den delen jag saknar för att få grejen att funka, frågan ba vad är det som stoppar den att bli skickad?

Permalänk
Skrivet av Mrsluggans:

Hittade en ledtråd, cookien som jag vill komma åt blir blockerad
<Uppladdad bildlänk>

Det är den delen jag saknar för att få grejen att funka, frågan ba vad är det som stoppar den att bli skickad?

Hittade lösningen, cookies var inställt på samesite stritct.

Löste det genom att stoppa in server.servlet.session.cookie.same-site=none i min properties.
Om denna app är säker ? det skulle jag inte säga, men den funkar!

Permalänk
Skrivet av Mrsluggans:

Hittade lösningen, cookies var inställt på samesite stritct.

Löste det genom att stoppa in server.servlet.session.cookie.same-site=none i min properties.
Om denna app är säker ? det skulle jag inte säga, men den funkar!

Går inte kakor att konfigurera så det finns en array av webbplatser som de får "fungera" på? Jag tänker då att de ska få "fungera" därifrån de utfärdades (backend) och sedan i din frontend (DigitalOcean(?)).

Mvh,
WKL.

Visa signatur

"Den säkraste koden är den som aldrig skrivs"