Federation Gateway

一般的なアーキテクチャは、いわゆるフェデレーションゲートウェイです。このアプローチでは、IdentityServerは1つ以上の外部IDプロバイダへのゲートウェイとして機能します。

../_images/federation_gateway.png

このアーキテクチャには次の利点があります。

  • あなたのアプリケーションは、1つのトークンサービス(ゲートウェイ)について知っているだけで、外部プロバイダへの接続に関するすべての詳細が隠されています。これは、アプリケーションを更新することなく、外部プロバイダを追加または変更できることを意味します。
  • (外部サービスプロバイダーとは対照的に)ゲートウェイを制御します。これは、変更を加えることができ、外部プロバイダーが自分のサービスに対して行う変更からアプリケーションを保護できることを意味します。
  • ほとんどの外部プロバイダは、クレームおよびクレームタイプの固定セットのみをサポートしています。ゲートウェイを中央に置くことで、プロバイダからの応答をドメイン固有のID情報を変換/追加/修正することができます。
  • 一部のプロバイダはアクセストークン(ソーシャルプロバイダなど)をサポートしていません。ゲートウェイはAPIについて知っているため、外部IDに基づいてアクセストークンを発行できます。
  • 一部のプロバイダは、接続するアプリケーションの数によって料金を請求します。ゲートウェイは、外部プロバイダへの単一のアプリケーションとして機能します。内部的には、必要な数のアプリケーションに接続できます。
  • 一部のプロバイダはプロプライエタリプロトコルを使用したり、標準的なプロトコルに独自の変更を加えました。ゲートウェイでは、それに対処する必要がある場所は1つだけです。
  • 1つの場所ですべての認証(内部または外部)を強制することで、アイデンティティマッピングに関する膨大な柔軟性を提供し、すべてのアプリケーションに安定したIDを提供し、新しい要件を処理します

言い換えれば、フェデレーションゲートウェイを所有することで、アイデンティティインフラストラクチャを大いに制御できます。また、ユーザーの身元が最も重要な資産の1つなので、ゲートウェイを制御することをお勧めします。

実装

私たちのクイックスタートUIには、以下の機能の一部を利用しています。また、外部認証クイックスタートと外部プロバイダに関するドキュメントもチェックしてください。

  • IdentityServerアプリケーションに認証ハンドラを追加することにより、外部IDプロバイダのサポートを追加できます。
  • これらの外部プロバイダーを呼び出すことによってプログラムでクエリできますIAuthenticationSchemeProvider。これにより、登録された外部プロバイダに基づいてログインページを動的にレンダリングできます。
  • 私たちのクライアント設定モデルでは、利用可能なプロバイダをクライアントごとに制限することができます(IdentityProviderRestrictionsプロパティを使用する)。
  • またEnableLocalLogin、クライアントのプロパティを使用して、ユーザー名/パスワード入力をレンダリングするかどうかをUIに伝えることもできます。
  • 私たちのクイックスタートUIは、すべての外部認証呼び出しを単一のコールバック(クラスを参照ExternalLoginCallbackしてくださいAccountController)を通じてファンネルします。これにより、後処理のための単一のポイントが可能になります。