web-dev-qa-db-ja.com

Spring Securityによるセキュリティの保護RESTマイクロサービス

RESTを介してWebクライアントアプリケーションに通信する複数のマイクロサービスを保護するためのベストプラクティスで効率的なソリューションを探しています。

現在の設定

これらのマイクロサービスは、Spring Frameworkを使用してJavaで作成され、Dockerコンテナーで実行されます。

クライアントはAngular 2アプリケーションです。

ゲートウェイ」として機能し、Webクライアントと他のサービス間の唯一の通信ポイントとなる新しいµServiceを作成しました。

リモート認証APIからJWT暗号化トークンを取得します(LOCKと呼びましょう)

私が考えていた解決策

enter image description here

ログインJWTをCookieに保存して、ゲートウェイに送信することができます。

ゲートウェイは、関連するµServiceに送信される最終ペイロードにトークンを埋め込み、それがデータベースに新しく追加された場合はユーザーを格納します。

次に、マイクロサービスはクエリを取得し、リモート認証サービスにユーザーの役割をチェックインします。十分であれば、結果として200ステータスを返します。

編集

ΜServices HiveにRabbitMQブローカーを配置し、WebSocketを使用する必要があります。 REST APIをセキュリティで保護するのと同じ方法でWebSocketを保護するために、ゲートウェイでセキュリティを管理する必要があるかどうか、おそらくそれ自体をマイクロサービスレベルで管理する必要があるかどうかわかりません。大量のメッセージが送信されるため、処理速度を低下させるミドルウェアを取り除く必要があります。

質問

それは良い習慣ですか?何がもっとうまくできるでしょうか?同じニーズを満たすことを行った例はありますか?あなたの分け前と考えをどうもありがとう。

15
Alex

このトピックに関するDave Sayerのすばらしいウェビナーをご覧になることをお勧めします。彼は、SpringセッションからOAuth2までさまざまなオプションを提案しています。

ここでウェビナーを見つけることができます: https://spring.io/blog/2014/11/07/webinar-replay-security-for-microservices-with-spring-and-oauth2

コードサンプルのチュートリアルもありましたが、今は見つかりません。

2
Jan Zyka