マイクロサービスを使用したユーザー認証


12

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

私にとって後者は、変更の適用、ポリシーの実施を容易にするため、より理にかなっています。DRYなどです。ただし、あらゆる種類のサービスがルールを1か所にダンプすることで簡単に手に負えなくなる可能性があり、ネットワークのオーバーヘッドも心配します。

何かご意見は?

回答:


7

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

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


認証にはOAuth2を使用します。機能を複製し、ロジックをサービス全体に分散させるのではなく、同じ原則(つまり、単一の明確に定義された責任を持つ中央サービスを持つ)を承認に使用します。私にとって、それはドメイン境界の違反です。サービスルール(stackoverflow、プログラマなど)の分離を整理する必要があることを意味することに同意します。
morcmarc

2
少数のコアマイクロサービスが同じアクセス許可を使用する場合に便利な、サービス固有のアクセス許可によって無効にされるグローバルアクセス許可を潜在的に持つことができます。マイクロサービス固有の権限は、中央認証サービスの潜在的なパフォーマンスの問題を回避するために、おそらくそのマイクロサービスのアプリインフラストラクチャに保存する必要があります。
ジョナサンヴォス

4

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

ソース

そして、これは完全に理にかなっています。中央認証に疑いの余地はないと思います。しかし、承認はかなり複雑です。

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.