Zuul Edge Server の背後にある多数のサービスがあります。Zuul Edge Server は認証も実行します。セッションは、Spring Session を使用してすべてのサービスで共有されます。リクエストを認証して、同じフロー内のサービスにルーティングできるようにしたいと考えています。私は、ゲートウェイ サーバーがリクエストを認証してルーティングできるDave Syer のチュートリアルを見ました。
そのプロジェクトでは、次のコマンドが機能します。
curl -u admin:admin http://localhost:8080/user
curl -c cookie.txt -u admin:admin http://localhost:8080/user && curl -b cookie.txt http://localhost:8080/admin/user
これもうまくいくと思っていましたが、うまくいきません:
curl -u admin:admin http://localhost:8080/admin/user
ゲートウェイ サーバーが認証し、redis セッションを作成し、redis セッションから認証を選択した管理サービスにリクエストをルーティングすることを期待していました。要求は管理サービスにルーティングされていますが、基本認証も試みて失敗します。
これは、管理サービスのログに表示されるものです。
o.s.s.w.a.www.BasicAuthenticationFilter : Basic Authentication Authorization header found for user 'admin'
o.s.s.authentication.ProviderManager : Authentication attempt using org.springframework.security.authentication.dao.DaoAuthenticationProvider
o.s.s.a.dao.DaoAuthenticationProvider : User 'admin' not found
o.s.s.w.a.www.BasicAuthenticationFilter : Authentication request for failed: org.springframework.security.authentication.BadCredentialsException: Bad credentials
HTTP 401 Unauthorized 応答を受け取ります。
また、管理サービスで HTTP 基本認証を無効にしようとしましたが、HTTP 403 Forbidden 応答が返されます。
これを達成する方法はありますか?
アップデート
セッションを保存するためにSpring Sessionが実装されているため、これは機能しないと思います。github での質問への回答を待っています。