web-dev-qa-db-ja.com

マイクロサービスによるユーザー認証

マイクロサービスが独自の承認の処理を担当する必要がありますか、それともマイクロサービスのすべてまたは(同じビジネスドメイン内の)サブセット全体で共有される個別の承認サービスを使用する方が良いと思いますか?

後者の方が、変更の適用やポリシーの適用が簡単になるので、より意味があります。 DRY etc.)ですが、すべての種類のサービスがルールを1か所にダンプし、ネットワークのオーバーヘッドも懸念されるため、簡単に手に負えなくなります。

何かご意見は?

12
morcmarc

私は中央の統合認証システムを使用し、マイクロサービスごとに個別のアクセス許可/統計情報を持っています(このスタック交換サイトではまだ賛成できないが、中央のスタック交換認証システムを使用しているときにスタックオーバーフローが発生するようなものです)。私の現在のプロジェクトの1つは、近い将来、このアプローチを含み、それはニースになります。以前の開発作業では、HIPPA準拠のシステムを作成する必要があり、2番目のレベルの承認/認証が必要でした。これは、法的に分離されているが機能的に分離できないシステムのコンポーネントからのデイジーチェーン承認に時間のかかる煩わしさです。デバッグプロセスは、単純なoauthログインまたはappidとx-authヘッダーを持つAPIよりもはるかに少ない喜びを伴います。

どちらを使用するかは、開発ロードマップの特定の要件によって異なりますが、過度のオーバーヘッドと開発時間/労力を回避するために、可能な場合はより単純なアプローチを選択します。

7
Jonathan Voss

各マイクロサービスは独自の認証を行う必要はありませんが、独自の承認を行う必要があります。

ソース

そして、これは完全に理にかなっています。中央認証については疑いがないと思います。しかし、承認はかなり混乱します。

マイクロサービスの数が最大で数百、数千になる可能性があることを考えると、中央承認サービスは、権限の一覧表示のみを担当し、それらの権限の検証は担当しません。個々のマイクロサービスは、許可を検証するために異なるアプローチをとる必要がある場合があります。

この中央承認サービスは、異なるサービスからモデルを取得する必要があり、決定を行うために異なるアプローチをとる必要がある場合がありますが、最初は簡単できれいに見えるかもしれません。しかし、後で混乱する可能性があります。

4
Ashwani Agarwal