Google OAuth перенаправляет на /login/oauth2/code/google вместо URL-адреса моего пользовательского обработчика успехаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Google OAuth перенаправляет на /login/oauth2/code/google вместо URL-адреса моего пользовательского обработчика успеха

Сообщение Anonymous »

Я реализую вход в Google OAuth для своего приложения Spring Boot и столкнулся с проблемой перенаправления после успешного входа в систему.
URL-адрес домашней страницы: https://www.codebyte.work/
Желаемый URL-адрес перенаправления после входа в систему:

Код: Выделить всё

https://www.codebyte.work/courses?accessToken=&refreshToken=
Авторизованные источники JavaScript в консоли Google: https://www.codebyte.work
Авторизованные URI перенаправления в консоли Google:

Код: Выделить всё

https://www.codebyte.work/login/oauth2/code/google
[/b]
Мой класс OAuth2SuccessHandler:

Код: Выделить всё

    @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);
}
}
Конфигурация веб-безопасности:

Код: Выделить всё

    @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:

Код: Выделить всё

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
Проблема:
Когда я вхожу в систему с помощью Google, вместо перенаправления на нужный URL-адрес (https://www.codebyte.work/courses?acces ... reshToken=) приложение перенаправляется на:

Код: Выделить всё

https://www.codebyte.work/login/oauth2/code/google?state=...&code=...&scope=...
При этом активируется моя пользовательская страница ошибки «Страница не найдена», которая предназначена для того, чтобы показать, пытается ли кто-то получить доступ к какой-либо несуществующей конечной точке.
Я проверил, что:
Идентификатор клиента и секрет клиента: Правильно настроены в application.properties.
URI авторизованного перенаправления в консоли Google: Соответствует приложению конфигурация.
OAuth2SuccessHandler: зарегистрирован в WebSecurityConfigs.
Что мне нужно:
Как обеспечить перенаправление приложения на мой собственный URL-адрес (

Код: Выделить всё

[https://www.codebyte.work/courses][1]
) после успешного входа в систему вместо отображения страницы с ошибкой «Страница не найдена»?
Вы можете обратиться к изображениям ниже для получения более подробной информации о проблеме:
Будем признательны за любые рекомендации и предложения.
Изображение


Подробнее здесь: https://stackoverflow.com/questions/793 ... om-success
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»