25

にアクセスするために Windows 認証ではなくフォーム認証を使用する必要がある ASP.NET サイトがありますActiveDirectoryMembershipProvider。Windows 認証が使用するブラウザー認証ポップアップではなく、設計された入力フォームが必要なため、サイトはフォームを使用する必要があります。

サイトは、ユーザー固有のファイルにアクセスするために、Active Directory 経由でログインしているユーザーになりすます必要があります。

ただし、私の web.config には以下が含まれていますがWindowsIdentity.GetCurrent()、これは と同じではありません。HttpContext.Current.User.Identity

<authentication mode="Forms">
    <forms loginUrl="login.aspx" timeout="480"/>
</authentication>
<identity impersonate="true" />

特定のアクセス許可を取得するために AD ユーザーになりすます必要があり、フォームがログインを処理するため、ユーザーのパスワードがわからないため、 と を使用できませLoginUser()ん。WindowsIdentity.Impersonate()

おそらくlogin.aspx.csから取得して、トークンをセッション変数にSystem.Web.UI.WebControls.Login.Password保存して後で使用することは可能ですか? それとも、正しい方法で偽装するより安全な方法でしょうか?LoginUser()WindowsIdentity.Impersonate()

フォーム認証が自動的にできない理由がわかりません<identity impersonate="true" />

このhttp://msdn.microsoft.com/en-us/library/ms998351.aspxを読みましたが、Windows 認証を使用しています。

4

5 に答える 5

0

あなたはこれが役に立つと思うかもしれません:

編集

あなたの質問をもっと詳しく読んでみると、そのアプローチがあなたのシナリオでうまくいくかどうかはわかりません。FormsAuthenticationおよびImpersonateActiveDirectoryユーザーを使用してログインする場合

于 2009-07-01T12:10:29.487 に答える
0

ユーザーが IE を使用している場合、Web サイトの統合セキュリティを有効にすると、ユーザーはサイレント認証されます (ログイン ダイアログもログイン ページもありません)。その後、なりすましが機能します。他のブラウザーをターゲットにする必要がある場合、これは機能しない可能性があります (ユーザーにはおそらくログイン ダイアログが表示されます)。

ユーザーがドメイン アカウント以外のアカウントを使用してログインしているため、現在の偽装は機能しません。資格情報を提供していないユーザーをサイトが偽装することは期待できません。それは、基本的なセキュリティの原則に反します。

于 2009-06-30T22:24:23.473 に答える
0

最近、同じ問題が発生しました。顧客は、ユーザーが AD アカウントでログインできるようにしたいと考えていました。この資格情報を使用して、Analysis Service や他のすべてのデータベースにアクセスする必要があります。彼らは監査システムを実装し、すべてのアクセスは現在ログインしているアカウントで行う必要があるため、そのようにしたいと考えていました。

偽装部分にフォーム認証と Win32 LogonUser() API を試してみましたが、うまくいきましたが、プレーン テキストとしてユーザーのパスワードも要求されます。その後、Windows 認証を利用することにしました。これにより、多くの時間を節約できます (AD 認証が不要になり、手動で偽装することができます)。もちろん、派手なログインページもありませんでした。

于 2011-09-17T16:41:52.380 に答える
-1

念のため、そして少し遅れて、私は自分に合ったものを見つけました。それは本当にシンプルですが、もちろんテスト目的のみです...

ユーザー名で Cookie を設定するだけです。

//Login button. You can give whatever input to the form
protected void Login_Click(object sender, EventArgs e)
{
    FormsAuthentication.SetAuthCookie("your_username", createPersistentCookie: true);
    Response.Redirect("~/");
}

どんなコメントでも受け付けます...

于 2014-12-16T05:18:36.490 に答える