ASP.NET网站2.0中的域上的NT身份验证

时间:2011-06-20 08:17:16

标签: c# asp.net authentication dns window

您好我想在ASP.NET 2.0网站上的域上使用Window NT身份验证。

我想首次访问我的网站时强制用户输入凭据。网站将仅在Intranet上使用。

我知道域名格式为x.y.com。

我添加到web.confing元素:

<authentication mode="Windows"/>

我的第一个问题是:

  1. 但我不怎么展示clasic窗口 用户访问网站时输入用户凭据的公式。
  2. 我的意思是这种形式:

    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 ");
            }
    

3 个答案:

答案 0 :(得分:1)

Windows身份验证的要点是,对于Intranet,登录框出现,用户使用其域凭据自动进行身份验证。您为什么要强制用户输入用户名和密码,可能是以明文形式输入,除非您要安装SSL证书,然后尝试手动模拟它们?

执行所需操作的唯一方法是在IIS中打开Basic AuthenticationIIS7 / IIS6的说明)。但是,如果这样做,则需要SSL证书来保护传输中的用户名和密码。我强烈建议你不要走这条路。

答案 1 :(得分:1)

我想添加@slowdart的答案,你也可以使用表单身份验证和LdapMembershipProvider对Active Directory进行身份验证。

答案 2 :(得分:0)

尝试阅读此链接,它应告诉您如何拒绝匿名用户访问,因此您应该弹出一个。

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.