JWTトークンを生成する認証サーバーを使用するアプリケーションを実装する必要があります。これらのトークンには、ユーザーが異なるリソースへのユーザーアクセスを許可するために付与される役割が含まれます。このセキュリティが追加されるゲートウェイもあります。認可サーバーからダウンストリームマイクロサービスにユーザー役割をレプリケートするにはどうすればよいですか。
私の質問は、ユーザーの役割と内部マイクロサービス間のセキュリティに関するものです。
ユーザーが作成されると、役割のセットが付与され、後で別の役割が付与されるか、後で新しい役割が追加される可能性があります。このすべての情報は、Authorization Serverに保管する必要があります。しかし、この情報は他のマイクロサービスにどのように複製されていますか? Spring Securityのようなフレームワークを使用してエンドポイントを保護する場合、異なるURLに必要なロールを追加する場合、ダウンストリームマイクロサービスのセキュリティ設定にユーザロールをハードコードする必要がありますか、承認サーバー?
アーキテクチャはパブリックネットワークでAPIゲートウェイを使用し、内部のサービスディスカバリと通信してさまざまなマイクロサービスを検出します。これらはまた、サービスディスカバリを通じてお互いを見つける。私はルーティングのためにZuulを使用します。このような状況では、内部ネットワーク内の通信も保護する必要がありますか?承認のためにSpring Securityを使用するには、ユーザロールを取得するためにJWTトークンを渡す必要があることを理解しています。しかし、そうでなければ必要でしょうか?クライアントからゲートウェイへのHTTPSとプライベートネットワーク内での安全でないHTTPを使用すれば十分でしょうか?
しかし、この状況で私の最初の質問はまだ残っています。コントローラーごとに許可されたユーザーの役割をハードコードする必要がありますか? @PreAuthorizeアノテーションを使用するには、ロールを前もって知っている必要があります。それらの変更によって、ASとコントローラの両方を同時に変更する必要があります。おそらくこれはそれがどういうものなのか、私は何かが欠けているかどうかを尋ねています。 – Kilian
もう一つの問題は私がZuulを使用していることです。今の私のRSは、フロントエンドにAngularを含むリバースプロキシです。 ZuulによってURLに変換された名前にHTTPを使用して呼び出すので、注釈を付けることができる手作業のコントローラはありません。だから、このような状況で、Zuulで設定されたURLへの認証を追加するために使用できるものは何ですか? – Kilian
最初の質問は - はい - 役割は先行することが分かっているはずですが、これは通常のIMOです。私はZuulのものには答えることができません - 私が話したような非常に基本的なセットアップは、トークンを得る:フロントエンド - >ズール - > AS。アクセスリソース:フロントエンド - >ズール - > RS <-> AS。私は、ZuulがASと直接通信する設定について詳しく説明することはできません。 –