私は基本的なサービス指向アーキテクチャを調査していますが、サービス全体でユーザー認証を最適に処理する方法を考えています。
非常に単純な例として、他の 2 つのサービスを呼び出すブログ アプリがあるとします。
- ユーザー データを保存し、アクセス トークンの資格情報を交換するためのユーザー/認証サービス
- 投稿データを管理する投稿サービス
アプリケーションのユーザーが特定の投稿を削除しようとしていて、「管理者」ロールを持つユーザーのみが削除を許可されているとします。
次の要求を行う必要があります。
アプリ -> 認証
現在のユーザーを認証します (ある種のトークンを介して)。トークンの有効期限が切れている場合、アプリはユーザーをログイン フォームなどにリダイレクトする可能性があります。
アプリ -> 投稿
投稿を削除します。
投稿 -> 認証
投稿を削除する前に、投稿サービスは、要求しているユーザーに削除の権限があることを確認する必要があります。(トークンを使用して) 現在のユーザーを認証し、「管理者」ロールがあることを確認します。
これは非常に単純な例ですが、人々がサービス全体で認証をどのように扱っているか興味があります。リクエストを承認するために、各サービスが認証サービスを個別に呼び出す必要があるようです。これは事実ですか?この種の SOA で認証を処理するより良い方法はありますか?
ありがとう!