Spring Securityの高級な認識は前の篇で私達はすでにSpring Secuityを初歩的に理解しました.
2カスタムログイン成功処理
デフォルトでは、ログイン成功後、Spring Securityは以前にログインを開始したその要求にジャンプします.
Authentication Success Handler
生成-保存セッション-送信
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上のリソース にアクセスする.
第三者登録の原理
デフォルトでは、ログイン成功後、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では有効期間を設定できます.
授権コードのパターンの特徴は、「ユーザがClient授権申請に同意する」過程はユーザ-Client-Providerの三者間のコミュニケーションである:
第三者登録の原理