4

私は、Spring ベースのマイクロサービスを使用する大規模プロジェクトに取り組んでいる開発チームに所属しています。最近、Spring Cloud プロジェクトを発見し、Netflix サービス、Zuul、Eureka、Ribbon などの実装を実験しています。

私たちの環境では、アプリケーションが実行されるドメインには、外部サービスを通じて事前承認されるまで誰もアクセスできません。ユーザーがアプリケーションに到達すると、承認サービスによって提供されるヘッダー トークンを介してユーザーの ID を取得できます。

ユーザーのセッションを確立するために事前認証フィルターを使用して Zuul を Spring Security でセットアップし、Spring Session を使用してすべてのバックエンド マイクロサービスでセッションを利用できるようにしたいと考えています。

これは正当なアプローチですか?Zuul のセキュリティに関して私が確認できる唯一の情報は、OAuth2 トークンをバックエンド サービスにプロキシする機能ですが、OAuth2 は必要ありません。ユーザーのセッションを確立し、バックエンド アーキテクチャのサービス間で共有するためのより良い方法はありますか?

4

2 に答える 2

4

次のチュートリアルをご覧ください。

GitHubのコードにジャンプできます

プロジェクトを立ち上げて実行することができました。現在、Ldap を使用するようにメモリ内認証を変更しています。私はJavaが初めてで、このチュートリアルは非常に簡単であることがわかりました。

あなたの、

マイク・コワルスキー

于 2015-09-24T12:40:35.810 に答える
-1

あなたと同じように、私は OAuth を必要とせず、すぐに使える Zuul には OAuth なしの認証サポートがないことがわかりました。Spring Cloud の検出機能とクライアント側の負荷分散機能を失うことなく、認証サービスを呼び出したいと考えていました。後で次のように装飾することでそれを達成しましたRibbonRoutingFilter。このアプローチでは、オリジナルRibbonRoutingFilterを無効にする必要があることに注意してください。これは、次の 1 行で実行できますapplication.ymlzuul.RibbonRoutingFilter.route.disable: true

基本的には、元のサービス ID をバックアップし、それを認証サービス ID で上書きしてから、元のサービス ID にリクエストを委譲しRibbonRoutingFilterます。認証が成功した場合は、元のサービス ID を復元し、リクエストを元の に再度委任しRibbonRoutingFilterます。認証が失敗した場合は、エラーを返します。私の GitHub の完全なコード: AuthAwareRoutingFilter.java

于 2016-05-22T21:11:19.043 に答える