Я разработал пример приложения oauth2 с весенней загрузкой, которое включает серверы авторизации и ресурсов. Исходя из моего варианта использования, я вставил пользовательский рабочий процесс между вызовом сервера oauth2 из клиентского приложения и подтверждением доступа и перенаправлением обратно в клиентское приложение с помощью сгенерированного кода авторизации.
Я успешно вставил пользовательскую бизнес-логику, но не могу возобновить сообщение о потоке кода авторизации oauth2.
Пожалуйста, помогите мне возобновить поток кода oauth.
Прикреплен код для securityConfiguration, а также API для вызова / savepref, где мне нужно возобновить поток oauth.
/ * Здесь я переопределил successForwardUrl для выполнения некоторой бизнес-логики перед генерацией кода авторизации и перенаправлением обратно в клиентское приложение * /
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/profile").hasAnyRole("ADMIN", "USER")
.and().formLogin()
.loginPage("/login")
.loginProcessingUrl("/login")
.usernameParameter("username")
.passwordParameter("password")
.successForwardUrl("/renderpin");
}
@Override
public void configure(AuthenticationManagerBuilder authenticationMgr) throws Exception {
authenticationMgr.parentAuthenticationManager(authenticationManager).userDetailsService(customUserDetailsService)
.passwordEncoder(passwordEncoder());
}
/ * Ниже приведен класс контроллера, в котором мне нужно возобновить поток oauth для генерации кода авторизации и перенаправить обратно в клиентское приложение с сгенерированным кодом * /
@RequestMapping(value = "/savepref", method = RequestMethod.POST)
public String savePreferences(@ModelAttribute(name = "ProfileResponse") ProfileResponse profileResponse,
@AuthenticationPrincipal UserDetails currentUser, Model model, HttpServletRequest request) {
Optional<Users> usersOptional = usersRepository.findByName(currentUser.getUsername());
int loggedInUserId = usersOptional.get().getId();
System.out.println("OAUTH2:PKS -> Saving prefs -> " + profileResponse.getUsername());
HttpSession session = request.getSession();
DefaultSavedRequest defaultSavedRequest = (DefaultSavedRequest) session.getAttribute("SPRING_SECURITY_SAVED_REQUEST");
return "redirect:/oauth/confirm_access";
}