【发布时间】:2011-07-26 10:32:53
【问题描述】:
我正在尝试开发一个使用 Windows 身份验证的 Intranet 应用程序/网站。
我想针对多个用户、角色等进行测试。
目前我只使用自己的域帐户。有没有办法可以模拟网站的不同用户?
【问题讨论】:
标签: c# .net testing windows-authentication intranet
我正在尝试开发一个使用 Windows 身份验证的 Intranet 应用程序/网站。
我想针对多个用户、角色等进行测试。
目前我只使用自己的域帐户。有没有办法可以模拟网站的不同用户?
【问题讨论】:
标签: c# .net testing windows-authentication intranet
因为一张图片值一千字,所以为了清楚起见,这里根据2GDev's comment 在 IE 中进行操作:
转到 Internet 选项 => 安全 => 本地 Intranet => 自定义级别 并将用户身份验证更改为“提示输入用户名和 密码”
单击确定,然后单击应用。关闭浏览器。重新打开它并将其指向您要调试的网站的 URL。您应该很高兴看到登录提示,您可以在其中使用不同的用户帐户登录以模拟并发(这就是我现在在这里所做的):
【讨论】:
当您使用 Windows 身份验证时,您可以通过以其他用户身份运行浏览器来更改您的身份。
在 Windows 中,转到浏览器 exe(或快捷方式),右键单击图标并从菜单中选择“运行为..”。这将提示您指定运行帐户的用户名和密码。
如果您指定的身份可以访问您正在运行的机器,那么浏览器将按照指定的身份运行。如果您使用 Windows 身份验证浏览网站,它将使用指定的身份进行身份验证,而不是您自己的身份。
【讨论】:
使用模拟...
来自MSDN
模仿
ASP.NET 应用程序可以使用模拟来执行操作和 使用经过身份验证的客户端的安全上下文访问资源 或特定的 Windows 帐户。
在你的 web.config 中
<identity impersonate="true" username="TestUser" password="P@ssw0rd" />
【讨论】:
如何安装和运行Virtual PC 以及一些可以从 MS 下载的已安装系统?
通过在您的计算机上运行虚拟 PC,您可以模拟与您的 PC 的连接,同时,它看起来就像一台不同的计算机,具有不同的 Ip。
【讨论】:
在我的例子中,有带有用户及其属性的数据库表。在用户表中有登录字段(域/用户名)。还获得了自定义身份和主体,它们使用此表在 global.asax autherticate_request 方法中对用户进行身份验证。
为了在调试模式下模拟不同的用户,在母版页(或 mvc 的布局页)中呈现了特殊的控件。它包含所有用户的选择框和应用按钮。
在会话中单击应用按钮后在服务器端推送模拟用户登录并发送刷新以响应。
因此,在下一个身份验证事件中,会检查会话中的模拟用户登录,如果存在,则根据模拟登录继续进行身份验证。
不好的一面:需要同步服务才能始终拥有基于当前 AD 的实际用户表。
【讨论】: