1

spring-social をアプリに統合しようとしてきましたが、セキュリティ コンテキストでアクセス トークンを設定する必要があるユーザーに関するワークフローを理解するのに苦労しています。spring-social 1.1.4 libs と spring-social-twitter 1.1.2.RELEASE を使用しています。SpringSocialConfigurer を使用してソーシャル サインインを Twitter に追加し、/auth/twitter API をヒットして OAuth1 フローをトリガーし、リクエスト トークンを取得し、Twitter にリダイレクトしてログインし、認証済みのアクセス トークンを取得することができます。リクエストトークン。リクエスト トークンを取得したら、Twitter 接続が UserConnection テーブルに永続化されることを期待していました。しかし、それは起こっていませんが、代わりに /signup URL にリダイレクトされています。SocialAuthenticationFilter のコードを調べると、 ここに画像の説明を入力してください。

201 行目は null を返すため、206 行目が /signup URL にリダイレクトされます。認証が SocialAuthenticationToken に設定されていることを期待していました。ここで起こるべき流れを誤解していますか?これが参考になるかどうかはわかりませんが、SpringSocialConfigurer をフックした既存の spring-security フィルター チェーンは次のとおりです。

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);
4

0 に答える 0