0

2 つの既存のレガシー Web アプリケーションがあります。1 つはドメイン内で Windows 認証を使用するイントラネット用で、もう 1 つはカスタム Web フォームのユーザー名 + パスワード ベースの認証を実行するインターネット アプリケーションです。現在、新しい Web アプリケーションが開発されており、インターネットとイントラネットの両方のユーザーがインターネットで利用でき、両方の認証モデルを処理します。したがって、 WIFを使用することにしました。Windows Server 2012 で ASP.NET 4.5 MVC 4 を使用する予定です。

ここでは ADFS 2.0 を使用できるため、イントラネット認証は問題になりません。

しかし、現在、ユーザー名とパスワードの認証を解決する方法はわかりません。カスタムメンバーシッププロバイダーに対して検証されるユーザー名とパスワードの情報を提供するユーザーを認証するために、カスタムUserNameSecurityTokenHandlerを開発する必要があるようです。しかし、ワークフロー全体でいくつかの支援が必要です...

インターネット ユーザー用のカスタム ログイン ページがあるとします。そして、インターネット ユーザーをこのログイン ページ (ASP.NET MVC 内) にルーティングできたと仮定すると、有効なトークンに欠けている部分は何でしょうか? 提供されたユーザー名とパスワードを受け取ったフォームまたは MVC コントローラー アクションは、構成された WIF ID プロバイダーをどのようにトリガーしますか?

4

1 に答える 1

2

最も洗練されたソリューションは、外部ユーザー用に別の STS を作成し、ADFS がこれを ID プロバイダーとして信頼するようにすることです。

ここに画像の説明を入力

外部ユーザーは、usr/pwd データベースを使用する IdP STS にリダイレクトされます。内部ユーザーは ADFS を介して (AD に対して) 直接認証されます。

このシナリオでは、ADFS は IdP とフェデレーション プロバイダーの両方として機能しています。

これが機能するには、ADFS と IdP (およびアプリ) の両方がインターネットに公開されている必要があります。メンバーシップを利用して使用できる STS はIdentityServerです。これはオープン ソースであり、もちろんニーズに合わせてカスタマイズできます。

このアーキテクチャを使用すると、アプリで特別なカスタマイズや拡張を行う必要はありません。ただし、「ホーム領域の検出」を処理する必要があります。これは、ユーザーを認証する場所 (イントラネットとエクストラネットなど) を知るプロセスです。おそらく、異なる URL などを持っている可能性があります。

于 2012-10-18T17:48:58.483 に答える