私は、スプリングブート、スプリングセキュリティ、およびspring-oauth2に基づいた簡単なOAuth2プロバイダをセットアップしたいと考えています。ステートレススプリングセキュリティoauth2プロバイダ
私はすべてのインスタンスを1台のマシンで処理しています。OAuth2の承認の場合、ユーザーは/oauth/authorize
に送信されます。ほとんどのユーザーはログインしていないので、春のセキュリティで/login
にリダイレクトされた後、/oauth/authorize
に戻ると承認が完了します。
デフォルト設定では、spring-securityはセッションIDを使用してユーザーのブラウザにCookieを設定し、セッションデータをメモリに保存します。ユーザーセッションを失うことなく、ロード・バランシングと青緑色の展開を可能とするために
public static class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.and()
.formLogin()
.loginPage("/login")
.permitAll();
}
[...]
、(私が思う)私は、次の手順を実行する必要があります。
- 無効にし、サーバー側のセッションを - APIのためOAuth2の承認のみを担当しています。私は、セッション用の共有データベースを持つ必要はないと思います。
- 代わりに、認証中に一時的にユーザー認証を含むremember-me Cookieを有効にします。
- Storeは
/login
のリダイレクトURLは- は、ログインフォームまたはユーザーのCookieでこれを格納することが可能です別の場所にリダイレクトしますか?あるいは、「セッションレス」の代替案は何でしょうか?
- 無効にCSRF(私はそれを行う方法を知っているとのOAuth2が、私は同様の目的を持っていると思うauth_codesを持っている。ただ、完全性のため。)
は、そのアプローチは理にかなっていますか?どのような変更が必要ですか?
私が大雑把に言ったのは、(a)無効なCSRF(b)リダイレクトURLをクッキーに保存することです。 私はoauth2コード用の記憶域だけが必要です。 – Jan