私は現在、SOA ソリューションを開発しています。このアーキテクチャでは、アーキテクチャ内の各サービスが安全で認証されたハイパーメディア リソースです (実際のハイパーメディアのように、きれいな URL を持つ RPC ではありません)。
顧客向け、社内向け、および顧客が構築したアプリケーションは、このアーキテクチャの上に構築されます (ここでは何も珍しいことではありません)。ユーザー識別と資格情報管理の要件が大きく異なる可能性があるため、アプリケーション間で共通の認証パターンが存在するとは想定できません。
したがって、アーキテクチャ内のサービスは別の認証スキームを使用する必要があります。理想的には、これはサービス (HMAC など) 間で完全に一貫しており、可能な限り多くのクライアント/サーバー モジュールを再利用できます。
私の質問は次のとおりです。分離されたサービス全体で一貫した認証と資格情報管理を提供するための共通パターンはありますか? もしそうなら、それは何ですか?
私はいくつかのアイデアを思いつきましたが、より経験豊富なエンジニアからの意見をいただければ幸いです。
1)各サービスは、個別ではあるが機械的に同一の認証インターフェイスを公開し、独自の資格情報管理を担当します。
2) 1)と同様ですが、資格情報管理を共有します。1)のように、アーキテクチャ内のサービスごとに個別の認証インターフェイスが引き続き公開されますが、基礎となるデータ メディアは共有されます。
3)単一の共有認証サービスがあり、それ自体と他のすべてのサービスの認証と資格情報管理を担当します。
アイデア2)が最も魅力的だと思いますが、もう少し改良が必要です。ここで完全に間違った方向に進んでいない限り。
適切と思われる限り、批判/提案してください。もちろん、これは設計に関するものであり、実装に関するものではないことに注意してください。現時点では、フレームワーク/ミドルウェア/プロトコル XYZ には興味がありません。
散文の謝罪、そして読んでくれてありがとう。