集成域帐户认证 我的网站需要集成域帐户认证,只有域用户才可以正常登录,我在iis中做如下设置,虽然达到了验证目的,但是每次用户打开浏览器后均需要输入域帐户名称及密码,虽然在IE选项中勾选了自动填入当前用户用户名及密码,但是仍然会跳出登录窗口,用户体验度不好,有没有像moss那样,自动域帐户登录的。所有登录机器均已加入域。是不是我IIS设置有误? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 iis 设置匿名访问。webconfig设置 windows验证。 楼上不行的,这样上去会用Windows的默认账号登入,比如net service 不要选中“Digest authentication”,要选“Integrated Windows authentication”... 恩,恩这个取决于你的登录Windows的身份。 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: 在此处添加构造函数逻辑 // } } 在页面上直接判断 这样并没有使用浏览器所处客户端的机器域帐户登录,而是使用IIS所在服务器的管理员账号进行登录了。 silverlight4样式问题 后台怎么获取ECEditor文本框的值 存储过程问题 .net3.5网站发布到服务器上无法正常运行 开发程序, 说一说,DateTime用字符串类型的优缺点? 分组水晶報表的问题。。。 在asp.net 中怎样实现 tracert 的功能 ASP.Net 中上传文件到ACCESS数所库中所遇问题 无法触发dropdownlist的seletedindexchanged事件? 工具箱里怎么添加组件? 关于GridView嵌套DropDownList的问题(显示和编辑的问题) gridview编辑问题!在线等
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: 在此处添加构造函数逻辑
//
}
}
在页面上直接判断
这样并没有使用浏览器所处客户端的机器域帐户登录,而是使用IIS所在服务器的管理员账号进行登录了。