2016年2月15日 星期一

{C#}利用LDAP協定與AD Server驗證

主要語法:
//要驗證的username與pwd
string domainAndUsername = domain + @"\" + username;
DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, pwd);
DirectorySearcher search = new DirectorySearcher(entry);
//要驗證的username
search.Filter = "(SAMAccountName=" + username + ")";
search.PropertiesToLoad.Add("cn");
SearchResult result = search.FindOne();
result 為null即AD無此帳號或帳密錯誤


未驗證的要求會被重新導向到 Logon.aspx 頁面
Web.config 檔
<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="logon.aspx" name="adAuthCookie" timeout="10" path="/">
      </forms>
    </authentication>
    <authorization>
      <deny users="?"/>
      <allow users="*"/>
    </authorization>
<!--此組態,所有對此應用程式發出的要求都會以已設定之帳戶的安全性內容執行。使用者必須提供認證以向 Active Directory 網域服務驗證,但只有已設定的帳戶可存取 Active Directory 網域服務。--!>
    <identity impersonate="true"/>
  </system.web>
 </configuration>




LDAP(Lightweight Directory Access Protocol) 屬性代表的意義
屬性 說明 範例
DC domain Component Server 網域名稱
CN Common Name username
OU OrganizationalUnitName
O OrganizationName
Street Street Address
L Locality Name
ST State Or Province Name
C Country Name
UID User Id


參考資料:
https://msdn.microsoft.com/zh-tw/library/ms180890(v=vs.90).aspx