首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用窗体身份验证模拟

使用窗体身份验证模拟
EN

Stack Overflow用户
提问于 2009-06-30 21:52:30
回答 3查看 23.7K关注 0票数 25

我有一个ASP.NET站点,它必须使用窗体身份验证而不是Windows身份验证来访问ActiveDirectoryMembershipProvider。站点必须使用窗体,因为它们需要一个设计好的输入窗体,而不是Windows身份验证使用的浏览器身份验证弹出窗口。

该站点需要模拟通过Active Directory登录的用户以访问用户特定的文件。

但是,WindowsIdentity.GetCurrent()HttpContext.Current.User.Identity不同,尽管我的web.config包含:

代码语言:javascript
复制
<authentication mode="Forms">
    <forms loginUrl="login.aspx" timeout="480"/>
</authentication>
<identity impersonate="true" />

我不能使用LoginUser()WindowsIdentity.Impersonate(),因为我需要模拟AD用户来获得他们的特定权限,而且我不知道用户的密码,因为表单负责登录。

是否可以从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身份验证。

EN

回答 3

Stack Overflow用户

发布于 2009-06-30 22:24:23

如果您的用户正在使用IE,那么您可以打开网站的集成安全性,您的用户将以静默方式进行身份验证(没有登录对话框,没有登录页面)。然后,您的模拟将起作用。如果您需要针对其他浏览器,那么这可能不起作用(用户可能会看到一个登录对话框)。

您当前的模拟永远不会起作用,因为您的用户使用的不是他们的域帐户登录。你不能期望网站模仿一个没有提供凭据的用户。这将违背基本的安全原则。

票数 0
EN

Stack Overflow用户

发布于 2011-09-18 00:41:52

我们最近遇到了同样的问题,客户希望他们的用户可以通过AD帐户登录,然后必须使用此凭据来访问Analysis Service以及所有其他数据库。他们希望这样做,因为他们实现了一个审计系统,所有访问都必须由当前登录的帐户完成。

我们尝试了表单身份验证和模拟部分的Win32 LogonUser() API,它起作用了,但它也要求我们以纯文本的形式输入用户密码。后来,我们决定使用Windows身份验证,它节省了我们很多时间(不再使用AD身份验证,手动模拟)。当然,也没有花哨的登录页面。

票数 0
EN

Stack Overflow用户

发布于 2014-12-16 13:18:36

为了以防万一,而且有点晚了,我发现了一些对我有效的东西,它真的很简单,但当然只是为了测试目的……

只需使用您的用户名设置cookie即可。

代码语言:javascript
复制
//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("~/");
}

接受任何评论...

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1066275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档