Как возобновить поток кода авторизации Spring oauth2 после добавления пользовательского входящего потока? - PullRequest
0 голосов
/ 06 мая 2019

Я разработал пример приложения 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";
  }
...