Spring Securityの高級な認識は前の篇で私達はすでにSpring Secuityを初歩的に理解しました.


2カスタムログイン成功処理
デフォルトでは、ログイン成功後、Spring Securityは以前にログインを開始したその要求にジャンプします.
Authentication Success Handler
@Component("myAuthenticationSuccessHandler")
public class MyAuthenticationSuccessHandler implements AuthenticationSuccessHandler {

    @Autowired
    private ObjectMapper objectMapper;

    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
            Authentication authentication) throws IOException, ServletException {

        System.out.println("    ");

        response.setContentType("application/json;charset=UTF-8");
        response.getWriter().write(objectMapper.writeValueAsString(authentication));
    }
}
@Configuration
@EnableWebSecurity
@ComponentScan("com.sxnd.authentication")
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    @Qualifier("myAuthenticationSuccessHandler")
    private AuthenticationSuccessHandler successHandler;

    @Bean("objectMapper")
    public ObjectMapper objectMapper() {
        return new ObjectMapper();
    }

  ...

    @Override
    protected void configure(HttpSecurity http) throws Exception {
          http
                  .formLogin()
                  .loginPage("/sign-in.html")
                  .loginProcessingUrl("/login")
          .successHandler(successHandler)
              .and()
          ...

    }
}
ショートメッセージ認証コード登録
生成-保存セッション-送信
Spring Social開発第三者登録
OAuth
ユーザ名パスワードの認証の問題:
  • アプリケーションは、ユーザのマイクロメッセージ上のすべてのデータ
  • にアクセスすることができる.
  • ユーザはパスワードを変更するだけで、許可を回復することができます.
  • パスワード漏れの可能性が大幅に増加しました.
    ユーザーがAPPに与えるのはtokenで、ユーザ名のパスワードではない.アプリはtokenを携帯して微信自撮り写真にアクセスする.tokenでは有効期間を設定できます.
  • Provider、サービスプロバイダ(例えば、WeChat)
  • Authoriation Server(認証、トークン)
  • Resource Server(保存リソース)
  • Resource、リソース(例えば、WeChat自撮り写真)
  • Resource Owner、資源所有者(例えば、WeChatユーザ.自撮り写真の所有者はWeChatではない)
  • Cient、第三者アプリケーション
  • ユーザがClient
  • にアクセスする.
  • Cientは、ユーザに対して、ライセンスを要求する
  • .
  • ユーザは、Clientライセンス申請
  • に同意する.
  • CientはProviderのAuthoriation Serverにトークン
  • を申請する.
  • Providerは、Clientにトークン
  • を発行する.
  • CientはProviderのResource Serverにリソース取得を申請します.
  • ProviderからClientへの開放リソース
  • Cientは引き続きトークンを連れてProvider上のリソースにアクセスする.
  • OAuthプロトコルにおける4つの授権モード(上述の第2ステップに関する):
  • ライセンスコードモード(機能が最も完全で、流れが最も厳密で、応用が最も広い)
  • パスワードモード
  • クライアントモード
  • 簡略化モード
  • 授権コードパターン:
    授権コードのパターンの特徴は、「ユーザがClient授権申請に同意する」過程はユーザ-Client-Providerの三者間のコミュニケーションである:
  • ユーザがClientに訪問した後、ClientはユーザーをProviderに案内し、ProviderはClientライセンス
  • をユーザに問い合わせる.
  • ユーザが授権に同意した後、ProviderはClientに授権コードを返す.
  • Cientは、ライセンスコードでToken
  • を申請する.
  • Providerは、ライセンスコードを確認してToken
  • を発行する.
  • CientはTokenを連れてProvider上のリソース
  • にアクセスする.
    第三者登録の原理