Windows Identity Foundationを使用して、ASP.NETアプリケーションに誰かをログインする
質問
オフィスのスーパーバイザーは、開発者が次のことを行ったMicrosoft "Geneva"(現在のWindows Identity Foundation)のプレリリースバージョンでデモンストレーションを見たと言っています。
彼は、ユーザーがカスタマイズされたログオンシステムを使用してログインできるようなASP.NET Webアプリケーションの種類を設定しました。舞台裏では、Webアプリケーションは、アクティブディレクトリのユーザーとしてユーザーにログインします。
ユーザーがログインします。
ユーザーがログインすると、ASP.NET Webアプリケーションスレッドは、ユーザーのセッションの期間中にユーザーに記録されているときに実行され、ネットワーク上のリソースにアクセスできます(アクセスが制御されているテーブルでSQLクエリを実行するなど)
手順2)および3)は、IISのWebサイト設定の「ディレクトリセキュリティ」タブで「統合Windows認証」設定を使用するのとまったく同じです。ステップ1)Kerberos認証とは対照的に、カスタムログオンシステムを使用しているため、異なります。
1)、2)、および3)に記載されているとおりに動作するように、アプリケーションの1つを設定したいと考えています。ただし、Windows Identify Foundationに関して私が見たすべてのドキュメントは、CardspaceとFederated Securityに関するものです。現在、これらのテクノロジーのいずれかを使用することに関心はありません。
舞台裏のActive Directoryアカウントにユーザーをログインできるようにしたいだけです。
はい、私たちは試しました ActiveDirectoryMembershipProvider
と Forms Authentication
, 、しかし、すべてのページになりすましを必要とするネットワーク上のリソースに実際にアクセスするのは完全なKludgeです!
2010年1月7日更新。さて、私はしばらくこれに取り組んできました。おそらく、私が望む機能は、WIFのリリースバージョンではありません。
これが私が今いるところです。 MSDNのドキュメントを見つけました。これは、ASP.NETで使用されている3つの異なるアイデンティティがあることを示しています。 HttpContext.Current.User
, 、によって指定されたアイデンティティ Thread.CurrentPrincipal
, 、そして最後に指定されたアイデンティティ WindowsIdentity.GetCurrent
. リンク
設計を検討しているプロセスを使用したい場所の一例では、ログインしたユーザーとしてSQLクエリを実行したいと思います。私のデバッガーでは、httpcontextとユーザーをログインしているユーザーに簡単に設定していることがわかります。ただし、Windows認証を使用してSQLサーバーに接続すると、常に常に接続します。 WindowsIdentity.GetCurrent
ユーザーとそのユーザーは、なりすましでWindows認証を使用していない限り、常に常にASP.NETプロセスのIDです。マジックフルートの曲を再生することでユーザーがログインする必要があるため、アプリケーションでWindows認証を使用することは絶対に使用できません。WindowsAuthenticationには、マジックフルートの曲でログインするサポートがありません。
明確にするために、 WindowsIdentity
ログインしたユーザー(マジックフルートの歌でログインした)を表します。問題は、私がそれを使用できないことです WindowsIdentity
ユーザーのSQLクエリを実行します。
解決
WIFを使用すると、クレームベースのIDマップを広告アカウントにマップするため、クレームはフェデレーションアイデンティティの請求であるか、情報カードを介して配信される場合があります。 C2WTS この関数を実行します。
代表団のためにマップを作成する場合でも、広告IISを使用したい場合は常に委任する必要があります。 Kerberos Delegation IISの場合
他のヒント
ASP.NETでIDのなりすましを使用して同じことを達成できます。また、WebアプリのWindows統合認証を有効にする必要があります。これは目的を解決します。ログインしたユーザーにリソースにアクセスするために必要な権利がない場合、処理する必要があるセキュリティの例外が得られます。