複数の教育機関に対応する SaaS Web アプリケーションがあります。すべてのクライアントは、同じアプリケーション/データベースでホストされています。アプリケーションは現在、ASP.Net 4 Web フォーム用に C# で作成されています。
現在、私のアプリケーションは、ユーザー認証/承認にローカル/ネイティブ データベースを使用しています。
私たちのクライアントは、クライアントが認証プロバイダーであり、私のアプリケーションがコンシューマーであるシングルサインオンをサポートするように私たちに求めています.
問題は、クライアントが Shibboleth や OpenID Connect などのさまざまなプロトコル/メカニズムを介して SSO を要求していることです。これは、これらすべてで機能する、または少なくとも拡張可能なソリューションを作成する必要がある/作成する必要があることを意味します。
Thinktecture の IdentityServer に出会いました。これは、クライアントが使用するさまざまな SSO メカニズムを抽象化し、アプリが理解できるクレーム ベースの ID トークンをアプリに返すことができると思います。
しかし、私はこの概念に多くの苦労をしています。これは、私のアプリがすべての認証要求を IdentityServer にリダイレクトし、IdentityServer に OpenID Connect のやり取りを処理させてから、IdentityServer からユーザーについて必要な情報を含むトークンを受信することを意味しますか? ID サーバーはユーザーのレルムをどのように認識しますか (つまり、どのクライアント認証プロバイダーにユーザーを送信するかを認識します)。IdentityServer は、アプリのローカル/ネイティブ データベースでユーザーの存在を検証する必要がありますか? IdentityServer は SSO とローカル ログインの両方を処理できますか?
個別の ID サーバーを使用する方法はありますか? 私のアプリが 1 つのポイント (ID サーバー) と統合できるようになるようです。しかし、Thinktecture の IdentityServer に関するドキュメントは、構成方法以外にはあまりありません。ADFS は同様のソリューションを提供する場合がありますが、そこにあるほとんどの例は ADFS と Azure を対象としています。
最後に、サードパーティの認証プロバイダーはアプリケーションの特定の承認ニーズを認識できない可能性があるため、各ユーザーに関するローカル/ネイティブの承認データを引き続き維持すると想定しています。
そこに何か考えや提案はありますか?