我的网站需要集成域帐户认证,只有域用户才可以正常登录,我在iis中做如下设置,虽然达到了验证目的,但是每次用户打开浏览器后均需要输入域帐户名称及密码,虽然在IE选项中勾选了自动填入当前用户用户名及密码,但是仍然会跳出登录窗口,用户体验度不好,有没有像moss那样,自动域帐户登录的。所有登录机器均已加入域。是不是我IIS设置有误?

解决方案 »

  1.   

    iis 设置匿名访问。webconfig设置 windows验证。
      

  2.   

    楼上不行的,这样上去会用Windows的默认账号登入,比如net service
      

  3.   

    不要选中“Digest authentication”,要选“Integrated Windows authentication”...
      

  4.   

    恩,恩这个取决于你的登录Windows的身份。
      

  5.   


    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Runtime.InteropServices;   //必要引用
    using System.Security.Principal;    //必要引用
    /**//// <summary>
    /// UserLoginForDomain 的摘要说明
    /// 适用ASP.NET 2.0 
    /// Windows XP 调试成功
    /// 调用”advapi32.dll“win32 API
    /// </summary>namespace  UserLoginForDomain
    {
        public class UserLoginForDomainDAO
        {
            public const int LOGON32_LOGON_INTERACTIVE = 2;
            public const int LOGON32_PROVIDER_DEFAULT = 0;        WindowsImpersonationContext impersonationContext;        [DllImport("advapi32.dll", CharSet = CharSet.Auto)]
            public static extern int LogonUser(String lpszUserName,
                                              String lpszDomain,
                                              String lpszPassword,
                                              int dwLogonType,
                                              int dwLogonProvider,
                                              ref IntPtr phToken);
            [DllImport("advapi32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]
            public extern static int DuplicateToken(IntPtr hToken,
                                              int impersonationLevel,
                                              ref IntPtr hNewToken);
            /**/
            /// <summary>
            /// 输入用户名、密码、登录域判断是否成功
            /// </summary>
            /// <example>
            /// if (impersonateValidUser(UserName, Domain, Password)){}
            /// </example>
            /// <param name="userName">账户名称,如:string UserName = UserNameTextBox.Text;</param>
            /// <param name="domain">要登录的域,如:string Domain   = DomainTextBox.Text;</param>
            /// <param name="password">账户密码, 如:string Password = PasswordTextBox.Text;</param>
            /// <returns>成功返回true,否则返回false</returns>
            public bool impersonateValidUser(String userName, String domain, String password)
            {
                WindowsIdentity tempWindowsIdentity;
                IntPtr token = IntPtr.Zero;
                IntPtr tokenDuplicate = IntPtr.Zero;            if (LogonUser(userName, domain, password, LOGON32_LOGON_INTERACTIVE,
                LOGON32_PROVIDER_DEFAULT, ref token) != 0)
                {
                    if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
                    {
                        tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
                        impersonationContext = tempWindowsIdentity.Impersonate();
                        if (impersonationContext != null)
                            return true;
                        else
                            return false;
                    }
                    else
                        return false;
                }
                else
                    return false;
            }        public void undoImpersonation()
            {
                impersonationContext.Undo();
            }
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }    
     }
      
    在页面上直接判断
      

  6.   


    这样并没有使用浏览器所处客户端的机器域帐户登录,而是使用IIS所在服务器的管理员账号进行登录了。