ASP.NET C# AD驗證登入(使用LDAP群組cn,ou,dc寫法)

ASP.NET C# AD驗證登入(使用LDAP群組cn,ou,dc寫法)

Login.aspx.cs 

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.DirectoryServices;
using System.Linq;
using System.Security.Principal;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

 

public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    public static string ValidateUser(string ComputerName, string UserName, string Password)
    {


        if (ComputerName.IndexOf('.') != -1)
        {
            DirectoryEntry entry = new DirectoryEntry("LDAP://test.com.tw/cn=" + UserName + ",ou=user,ou=test,ou=test,ou=manger,dc=test,dc=com,dc=tw", UserName, Password);
            try
            {
                string objectSid =
                      (new SecurityIdentifier((byte[])entry.Properties["objectSid"].Value, 0).Value);

                return objectSid;
            }
            catch
            {
                return null;
            }
            finally
            {
                entry.Dispose();
            }
        }
        else
        {
            DirectoryEntry entry = new DirectoryEntry("WinNT://" + ComputerName, UserName, Password);
            try
            {
                string objectSid =
                      (new SecurityIdentifier((byte[])entry.Properties["objectSid"].Value, 0).Value);

                return objectSid;
            }
            catch
            {
                return null;
            }
            finally
            {
                entry.Dispose();
            }
        }
    }

    protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
    {
        string strComputerName = "test.com.tw";  
        string strUserName = ((System.Web.UI.WebControls.Login)sender).UserName;
        string strPassword = ((System.Web.UI.WebControls.Login)sender).Password;

        string strValidateUser = ValidateUser(strComputerName, strUserName, strPassword);

        if (strValidateUser != null)
        {
            e.Authenticated = true;
        }
        else
        {
            e.Authenticated = false;
        }
    }

}
 

LDAP的寫法若不正確將導致無法登入到AD,因此提供詳細寫法~

回AD網域寫法

 

 

參考或是複製語法時,別忘了留個言喔 ^ ^ ~