私は基本的なサービス指向アーキテクチャーを模索しており、サービス全体でユーザー認証を最もうまく処理する方法を知りたいと思います。非常に簡単な例としてサービス指向アーキテクチャの集中認証
、我々は他の二つのサービスに声をかけブログのアプリがあるとは:
- ユーザー/ユーザーデータを格納し、アクセストークン
- Aの資格情報を交換するための認証サービス投稿データを管理するためのサービスを投稿する
アプリケーションのユーザが特定の投稿を削除しようとしており、「管理者」ロールを持つユーザだけが許可されているとします。
次の要求がなされる必要があるでしょう:
アプリ - >認証
(トークンのいくつかの並べ替えを介した)現在のユーザーを認証します。トークンの有効期限が切れている場合はアプリがログインフォームにユーザーをリダイレクトすることができ、など
アプリ - >ポスト
投稿を削除。
ポスト - >認証
ポストが削除される前に、郵便サービスが要求しているユーザに権限があることを確認する必要があります。トークンを使用して現在のユーザーを認証し、そのユーザーが "管理者"ロールを持っていることを確認します。
これは非常に単純な例ですが、私は皆さんがサービスを通じて正式な方法を扱っているかどうか不思議です。要求を許可するために、各サービスが認証サービスとは別の呼び出しを行う必要があるようです。これは本当ですか?この種のSOAで認証を処理するためのより良い方法はありますか?
ありがとうございます!
トークン自体にユーザーの役割が含まれていることをお勧めしますか? – scttnlsn
セキュリティ要件によって異なります。トークンライフタイムの場合、承認の取り消しを処理しないで生きることができれば、それを使用することができます。あなたがそれぞれの要求に対して承認する必要があることに余裕がない場合。アイデンティティ・プロバイダとそれを使用するサービスが同じサーバーにデプロイされている場合、オーバーヘッドが妥当であることに注意してください。例えばOpenAMのポリシーエージェントhttps://wikis.forgerock.org/confluence/display/openam/Authentication+and+Authorization+Overview –
お気軽にお問い合わせください...ありがとう! – scttnlsn