RESTを介してWebクライアントアプリケーションに通信する複数のマイクロサービスを保護するためのベストプラクティスで効率的なソリューションを探しています。
現在の設定:
これらのマイクロサービスは、Spring Frameworkを使用してJavaで作成され、Dockerコンテナーで実行されます。
クライアントはAngular 2アプリケーションです。
「ゲートウェイ」として機能し、Webクライアントと他のサービス間の唯一の通信ポイントとなる新しいµServiceを作成しました。
リモート認証APIからJWT暗号化トークンを取得します(LOCKと呼びましょう)
私が考えていた解決策:
ログインJWTをCookieに保存して、ゲートウェイに送信することができます。
ゲートウェイは、関連するµServiceに送信される最終ペイロードにトークンを埋め込み、それがデータベースに新しく追加された場合はユーザーを格納します。
次に、マイクロサービスはクエリを取得し、リモート認証サービスにユーザーの役割をチェックインします。十分であれば、結果として200ステータスを返します。
編集
ΜServices HiveにRabbitMQブローカーを配置し、WebSocketを使用する必要があります。 REST APIをセキュリティで保護するのと同じ方法でWebSocketを保護するために、ゲートウェイでセキュリティを管理する必要があるかどうか、おそらくそれ自体をマイクロサービスレベルで管理する必要があるかどうかわかりません。大量のメッセージが送信されるため、処理速度を低下させるミドルウェアを取り除く必要があります。
質問:
それは良い習慣ですか?何がもっとうまくできるでしょうか?同じニーズを満たすことを行った例はありますか?あなたの分け前と考えをどうもありがとう。
このトピックに関するDave Sayerのすばらしいウェビナーをご覧になることをお勧めします。彼は、SpringセッションからOAuth2までさまざまなオプションを提案しています。
ここでウェビナーを見つけることができます: https://spring.io/blog/2014/11/07/webinar-replay-security-for-microservices-with-spring-and-oauth2
コードサンプルのチュートリアルもありましたが、今は見つかりません。