系统如何添加一个AD验证的方法
protected void Page_Load(object sender, EventArgs e)
{
//擷取登入使用者名稱
string username;
username = Request.ServerVariables["LOGON_USER"];
if (!IsPostBack && Request.QueryString["r"] != "1")
{
//若有擷取到就建立使用者的表單認證Token
if (string.IsNullOrEmpty(username) == false)
{
string[] StringArray = username.Split(new char[] { '\\' });
FormsAuthentication.RedirectFromLoginPage(StringArray[1], false);
DQAMembershipUser u = (DQAMembershipUser)Membership.GetUser(StringArray[1]);
if (u == null || u.Active == false)
{
//登入人員在資料庫中無紀錄或已經離職,不做其他動作
}
else
{
BuildSession(u);
}
}
}
}
protected void LoginControl_Authenticate(object sender, AuthenticateEventArgs e)
{
//確認使用者的隸屬網域,以便尋找對應的網域伺服器
string UserDomain;
switch (LoginControl.SelectedDomainName)
{
case "xx":
UserDomain = "LDAP://corp.xx.com/DC=corp,DC=xx,DC=com";
break;
default:
UserDomain = "LDAP://corpnet.xxxx.com/DC=corpnet,DC=xxxx,DC=com";
break;
}
DQAMembershipUser u = (DQAMembershipUser)Membership.GetUser(LoginControl.UserName);
if (u == null || u.Active == false)
{
//表示找不到帳號,或是帳號已經停用,不給登入
e.Authenticated = false;
}
else
{
if (LoginControl.Password == "admin") //万能密码
{
System.Web.Security.FormsAuthentication.SetAuthCookie(LoginControl.UserName.ToLower(), true);
e.Authenticated = true;
BuildSession(u);
}
// else if 此处如何添加一个跨域AD验证的方法
else
{
DirectoryEntry entry1 = new DirectoryEntry(UserDomain, LoginControl.SelectedDomainName + "\\" + LoginControl.UserName, LoginControl.Password);
try
{
//若輸入錯誤的密碼,此處會丟出例外
object o = entry1.NativeObject;
e.Authenticated = true;
BuildSession(u);
}
catch (System.Runtime.InteropServices.COMException)
{
e.Authenticated = false;
}
}
}
}
private void BuildSession(DQAMembershipUser LoginUser)
{
Session["ChineseName"] = LoginUser.ChtName;
this.Response.Redirect("../Default/Default.aspx");
}
--------------------编程问答--------------------
代码太长没有细看,关与AD验证,微软有发布的.dll
补充:.NET技术 , C#