私たちは3つのマイクロサービスを持っています:microA、microB & microC。マイクロA &がMicroBは1 アーキテクチャの仕組みマイクロサービスとOpenID接続?
に電力を供給している、私たちは "OpenIDの接続" プロバイダを実装する我々の場合には、セキュリティ層を必要とする製品に電力を供給している
- ビジネスニーズに適しています。 OpenIDプロバイダをスタックに追加します。
ユーザー/権限管理は、自然&非常に簡単です:私たちは権利のサブセットに各microservices上のユーザーのOpenIDの識別子関連付ける:サービスマイクロAに例えば
を、私たちはユーザーのOpenID XXXことを保存しますこれとそれを行うことができます。それはマイクロサービスレベルで隔離されています。我々の文脈の境界を尊重する。ファイン。
ユーザーがプロダクト1でOpenIDでログインすると、ユーザーとIDトークンにアクセストークンを付与します。
product1がサードパーティの使用するAPIを公開すると状況がより複雑になります。
ここで、ユーザーがサードパーティのWebアプリケーションにアクセスし、&にログインするよう促され、サードパーティがproduct1 APIに対していくつかの権利を得ることができるとします。
私が正しくOpenID connectを理解していれば、それはすべてOAuth2上での認証についてですが、それで古典的なOAuth2スコープ管理をどうやって扱うのでしょうか?
私が見つけた最良のシナリオは次のとおりです。
全体のOpenID認証情報
を持つように接続してからにユーザーを依頼する別の認証サーバに別のフルのOAuth2プロセスを作成しますサードパーティにいくつかのスコープを与えますか?サードパーティであることを意味
:
- ユーザーがOpenIDプロバイダ
- にログインするように要求されますが、リダイレクトさと範囲を受け入れるように求め
これは間違いありませんか?はいの場合、OAuth2サーバーのフローはエンドユーザーへの4つのHTTPリクエストのようなものなので、2回実行すると8つのリクエストを実行して認証+認証フローを完了させるようになります。あまりにも大規模だと思われる。
フィードバックいただきありがとうございます。 第三者にとっては、特定の範囲を要求することだけです。 例では、OpenIdマイクロサービスはproduct1、product2(など)のすべての特定のスコープについて知っている必要があります。 signin(アクセストークンを要求している)に、サードパーティはプロダクトについて特定の「権利」を要求する可能性があるためです。 – ludofleury