ASP.NET网站2.0中域上的NT身份验证
本文关键字:NT 身份验证 NET 网站 ASP | 更新日期: 2023-09-27 17:59:29
嗨,我想在ASP.NET 2.0网站的域上使用Window NT身份验证。
当用户第一次访问我的网站时,我想强制他输入凭据。网站将仅在intranet上使用。
我知道域名的格式是x.y.com.
我添加到web.confing元素:
<authentication mode="Windows"/>
我的第一个问题是:
- 但我不知道如何显示碎屑窗口用户访问网站时输入用户凭据的公式
我指的是这个表格:
http://blumenthalit.net/blog/Lists/Posts/Attachments/54/image_2.png
2我的第二个问题是域上的身份验证。我在谷歌上搜索,只有这部分代码对我有效。
public class WinAPI
{
// Use NTLM security provider to check
public const int LOGON32_PROVIDER_DEFAULT = 0x0;
// To validate the account
public const int LOGON32_LOGON_NETWORK = 0x3;
// API declaration for validating user credentials
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool LogonUser(string lpszUsername, string lpszDomain,
string lpszPassword, int dwLogonType, int dwLogonProvider, out int phToken);
//API to close the credential token
[DllImport("kernel32", EntryPoint = "CloseHandle")]
public static extern long CloseHandle(long hObject);
};
int hToken = 2;
bool ret = WinAPI.LogonUser("userName", "domain.example.com", "password", WinAPI.LOGON32_LOGON_NETWORK,
WinAPI.LOGON32_PROVIDER_DEFAULT,
out hToken);
if (ret == true)
{
MessageBox.Show(" Valid Windows domain User ");
WinAPI.CloseHandle(hToken);
}
else
{
MessageBox.Show(" Not an valid Windows domain User ");
}
Windows身份验证的要点是,对于内部网,登录框不会出现,用户使用其域凭据自动进行身份验证。你到底为什么要强迫用户输入他们的用户名和密码,可能是明文,除非你要安装SSL证书,然后尝试手动模拟他们?
执行所需操作的唯一方法是在IIS中打开"基本身份验证"(IIS7/IIS6的说明)。但是,如果这样做,您需要SSL证书来保护传输中的用户名和密码。我强烈建议你不要走这条路。
我想在@blowdart的回答中补充一点,您也可以使用表单身份验证和LdapMembershipProvider来针对Active Directory进行身份验证。
试着阅读这个链接,它会告诉你如何拒绝匿名用户的访问,所以你应该得到一个弹出窗口。
http://weblogs.asp.net/scottgu/archive/2006/07/12/Recipe_3A00_-Enabling-Windows-Authentication-within-an-Intranet-ASP.NET-Web-application.aspx
<configuration>
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
Note that the <deny users=”?”/> directive within the <authorization> section above is what tells ASP.NET to deny access to the application to all “anonymous” users to the site (the “?” character means anonymous user). This forces Windows to authenticate the user, and ensures that the username is always available from code on the server.