これが私がやろうとしてきたことです
フォーム認証と Active Directory メンバーシップを使用して ASP.NET MVC 3 アプリケーションを構築します。Web サーバーとデータベースは異なる物理サーバーであるため、ダブルホップです。
答えは、制約付き委任とプロトコル移行に関するこの古い記事だと思いましたか? これまでのところ、私はそのテクニックを機能させることができませんでした。
実稼働セットアップで Windows 2008 (IIS7) に展開する前に、Web サーバー用の DEV マシン (Windows 7、IIS7) からこれをテストしています。Windows 2008 は違いをもたらしますか?
何が機能し、何が失敗するか
フォーム認証と AD メンバーシップでログインできます。これはうまく機能しているようです。このコードを使用してデータベース呼び出しを実行しようとすると:
public void AsUser(Action action)
{
using (var id = new WindowsIdentity(User.Identity.Name + @"@example.com"))
{
WindowsImpersonationContext context = null;
try
{
context = id.Impersonate();
action.Invoke();
}
catch (Exception ex)
{
// ex.Message is The type initializer for System.Data.SqlClient.SqlConnection threw an exception
// buried inner exeption is Requested registry access is not allowed
}
finally
{
if (context != null)
{
context.Undo();
}
}
}
}
例外が発生し、ローカル DEV サーバーにセットアップの問題があると思い込んでしまいます。内部例外はRequested registry access is not allowed
.
ブレークポイントを設定し、呼び出しWindowsIdentity
後にを調べると、が に設定されていることがわかります。これは、正しくセットアップされていないという手がかりのようです。誰でも確認できますか?Impersonate()
ImpersonationLevel
Identification
私は正しい軌道に乗っていますか?これはセットアップすることさえ可能ですか? 任意のポインタをいただければ幸いです。