基本的に、spring-boot oauth2 統合を spring-session で動作させることはできません。
spring-boot の問題トラッカーで問題を作成しました: https://github.com/spring-projects/spring-boot/issues/4360
この問題を実証するためにレポを作成しました
https://github.com/sloppycoder/spring-session-oauth-problem
2 つのモジュールがあります。
- auth-server は oauth2 認証サーバーです。それを実行するには、ただ
mvn
. サーバーはhttp://localhost:19999/uaaになります - web-app は、シングル サインオンに auth-server を使用する Web アプリケーションです。http://localhost:8080
mvn
でアプリを起動します
私の sso ログアウト ロジックは次のように機能します。
- 「ログアウト」ボタンをクリックすると、ログアウトが成功した後、リダイレクト先の URL http://localhost:8080/ssologoutを渡し、 http://localhost:19999/uaa/logoutに POST が実行されます。
- 認証サーバーからログアウトし、http://localhost:8080/ssologoutにリダイレクトします
- http://localhost:8080/ssologout次に、 http://localhost:8080/logoutに POST します。
- (デフォルトの spring-security 動作) ログアウト後、http://localhost:8080/login?logoutにリダイレクトします
- http://localhost:8080/login?logout http://localhost:19999/uaa/loginにリダイレクトし、ユーザーに再度ログインするように求めます。
しかし、春のセッションに入った後、ステップ 5 は行われません。ブラウザは web-app /dashboard に直接アクセスします。
sos-spring-session ブランチを実行する前に、必ずローカルの redis デーモンを開始してください。
異なる動作を示すために 2 つのブランチを作成しました。
- sso のみ。spring-boot は auth-server と統合され、問題なく動作します。
- sso-spring-session。ログアウトは機能しません。
github compareは違いを示しています。
これを解決する方法についてのアドバイスや提案をいただければ幸いです。