spring-social: SecurityContextHolder.getContext().getAuthentication() возвращает ноль

Я пытался интегрировать Spring-social в наше приложение, и у меня возникают трудности с пониманием рабочего процесса в отношении того, кто должен устанавливать маркер доступа в контексте безопасности. Я использую Spring-Social 1.1.4 libs и Spring-Social-Twitter 1.1.2.RELEASE. Я добавил социальный вход в Twitter с помощью SpringSocialConfigurer и могу использовать мой API / auth / twitter, чтобы вызвать поток OAuth1 для получения токена запроса, перенаправить в Twitter для входа в систему, а затем получить токен доступа с моим аутентифицированным маркер запроса. Получив токен запроса, я ожидал, что мое подключение к Twitter будет сохранено в моей таблице UserConnection. Однако этого не происходит, но вместо этого я перенаправлен на URL / signup. После проверки кода в SocialAuthenticationFilter я вижу: введите описание изображения здесь

где строка 201 возвращает ноль, таким образом, вызывая строку 206 для перенаправления на URL / signup. Я ожидал, что моя Аутентификация была установлена ​​на SocialAuthenticationToken. Я неправильно понимаю поток здесь, который должен произойти? Не уверен, поможет ли это, но существующая цепочка фильтров Spring-Security, в которую я подключил SpringSocialConfigurer, выглядит следующим образом:

SpringSocialConfigurer springSocialConfigurer = new SpringSocialConfigurer()
    .connectionAddedRedirectUrl("/connectionAdded")
    .postLoginUrl("/postLogin")
    //.postLoginUrl("/")
    .signupUrl("/signup")
    .defaultFailureUrl("/#/login")
    .alwaysUsePostLoginUrl(true);
springSocialConfigurer
    .addObjectPostProcessor(new ObjectPostProcessor<SocialAuthenticationFilter>() {
      @Override
      public <O extends SocialAuthenticationFilter> O postProcess(O filter) {
        //filter.setAuthenticationSuccessHandler(loginSuccessHandler);
        System.out.println(filter.getClass().getName());
        return filter;
      }
    });

http.csrf()
    .disable()
    .headers()
    .frameOptions()
    .disable()
    .and()
    .sessionManagement()
    .sessionFixation()
    .none()
    .enableSessionUrlRewriting(false)
    .and()
    .formLogin()
    .permitAll()
    .successHandler(successHandler)
    .failureHandler(failureHandler)
    .loginPage("/login")
    .loginProcessingUrl("/login_post.htm")
    .and()
    .authorizeRequests()
    .antMatchers("/account/wishlist/**", "/account/**", "/auth/**")
    .access("isAuthenticated()")
    .and()
    .requiresChannel()
    .antMatchers("/", "/**")
    .requiresSecure()
    .and()
    .logout()
    .invalidateHttpSession(true)
    .deleteCookies("ActiveID")
    .logoutUrl("/logout")
    .and()
    .portMapper()
    .http(80)
    .mapsTo(443)
    .http(8080)
    .mapsTo(8443)
    .http(8081)
    .mapsTo(8444)
    .http(8082)
    .mapsTo(8445)
    .and()
      .addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)
      .addFilterBefore(sessionFixationProtectionFilter, SessionManagementFilter.class)
      .rememberMe()
      .tokenValiditySeconds(1209600)
    .and()
      .apply(springSocialConfigurer);

0 ответов

Другие вопросы по тегам