Ich implementiere die Google OAuth-Anmeldung für meine Spring Boot-Anwendung und habe nach einer erfolgreichen Anmeldung ein Problem mit der Umleitung.
Homepage-URL: https://www.codebyte. work/
Gewünschte Weiterleitungs-URL nach der Anmeldung:
https://www.codebyte.work/courses?acces ... reshToken=
Autorisierte JavaScript-Ursprünge in der Google Console: https://www.codebyte.work
Autorisierte Redirect-URIs in der Google Console: < stark>https://www.codebyte.work/login/oauth2/code/google
Meine OAuth2SuccessHandler-Klasse:
@Component
@RequiredArgsConstructor
public class OAuth2SuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
private final UserEntityService userService;
private final JwtService jwtService;
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException, ServletException {
OAuth2AuthenticationToken token = (OAuth2AuthenticationToken) authentication;
DefaultOAuth2User OAuthUser = (DefaultOAuth2User) token.getPrincipal();
String email = OAuthUser.getAttribute("email");
UserEntity user = userService.getUserByEmail(email);
if (user == null) {
user = userService.save(
UserEntity.builder()
.name(OAuthUser.getAttribute("name"))
.email(email)
.roles(Set.of(Roles.USER))
.build()
);
}
String accessToken = jwtService.generateAccessJwtToken(user);
String refreshToken = jwtService.generateRefreshJwtToken(user);
Cookie cookie = new Cookie("refreshToken", refreshToken);
cookie.setHttpOnly(true);
cookie.setPath("/");
response.addCookie(cookie);
// Redirecting to the frontend with tokens
String frontEndUrl = "https://www.codebyte.work/courses?accessToken=" + accessToken
+ "&refreshToken=" + refreshToken;
getRedirectStrategy().sendRedirect(request, response, frontEndUrl);
}
}
Web-Sicherheitskonfiguration:
@Configuration
@EnableWebSecurity
@EnableMethodSecurity
@RequiredArgsConstructor
public class WebSecurityConfigs {
private final JwtAuthFilter jwtAuthFilter;
private final OAuth2SuccessHandler successHandler;
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeRequests(auth -> auth
.requestMatchers("/auth/**", "/swagger-ui/**", "/v3/api-docs/**", "/home.html").permitAll()
.anyRequest().authenticated())
.csrf(AbstractHttpConfigurer::disable)
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class)
.oauth2Login(oauth2 -> oauth2
.successHandler(successHandler)
);
return http.build();
}
}
application.properties Konfiguration:
spring.security.oauth2.client.registration.google.client-id=your-client-id
spring.security.oauth2.client.registration.google.client-secret=your-client-secret
spring.security.oauth2.client.registration.google.redirect-uri=https://www.codebyte.work/login/oauth2/code/google
Das Problem:
Wenn ich mich mit Google anmelde, werde ich nicht zu meiner gewünschten URL (https://www.codebyte.work) weitergeleitet /courses?accessToken=&refreshToken=), die Anwendung leitet weiter zu:
https://www.codebyte.work/login/oauth2/ ... ...&scope=...
Dies löst meine benutzerdefinierte Fehlerseite „Seite nicht gefunden“ aus, die anzeigen soll, wenn jemand versucht, auf einen nicht vorhandenen Endpunkt zuzugreifen.
Ich habe Folgendes überprüft:
Client-ID und Client-Geheimnis: Korrekt konfiguriert in application.properties.
Autorisierter Weiterleitungs-URI in der Google Console: Entspricht der Anwendungskonfiguration.
OAuth2SuccessHandler: Ist in WebSecurityConfigs registriert.
Was ich brauche:
Wie kann ich sicherstellen, dass die Anwendung weiterleitet? meine benutzerdefinierte URL ([https://www.codebyte.work/courses][1]) nach einer erfolgreichen Anmeldung, anstatt die Fehlerseite „Seite nicht gefunden“ anzuzeigen?
Weitere Informationen zu dem Problem finden Sie in den folgenden Bildern:
Jede Anleitung oder Anregung wäre willkommen.
404 Not Found-Snapshot
Google OAuth leitet zu /login/oauth2/code/google statt zu meiner benutzerdefinierten Success-Handler-URL weiter ⇐ Java
-
- Similar Topics
- Replies
- Views
- Last post