本文介紹如何用c#程式對Active Directory網域進行身分認證。
首先我們先取得AD認證server的資訊,我們將這資訊寫在Web.Config的<appSettings>內。
首先我們先取得AD認證server的資訊,我們將這資訊寫在Web.Config的<appSettings>內。
//web.config
<appSettings>
<!--AD Server Information-->
<add key="ADServer" value="192.168.31.48:389"/>
<appSettings>
<!--AD Server Information-->
<add key="ADServer" value="192.168.31.48:389"/>
在程式開頭,需引用System.DirectoryServices這個類別。
using System;
using System.Configuration;
using System.DirectoryServices;
using System.Configuration;
using System.DirectoryServices;
接著,我們寫一個方法來承接使用者登入時輸入的帳號與密碼,首先我們取得web.config中的AD 認證server資訊,然後建立一個DirectoryEntry的物件,將AD 認證server資訊+user帳號+user密碼帶入,再來設定search.Filter搜尋條件為cn=user帳號,然後使用search.FindOne()去找尋這個使用者,若search.FindOne()找到但密碼錯誤,則會回應null出來;反之,表示我們找到也對這個登入者認證成功。
private bool IsValidationForAD(string Username, string Password)
{
string LoginAD =ConfigurationSettings.AppSettings["ADServer"];
DirectoryEntry entry =
new DirectoryEntry("LDAP://" + LoginAD, Username, Password);
object obj = entry.NativeObject;
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(&(cn=" + Username + "))";
SearchResult result = search.FindOne();
if (result!=null)
{
return true;//verify password is succeed!
}
else
{
return false;//User ID or Password Error!!
}
}
{
string LoginAD =ConfigurationSettings.AppSettings["ADServer"];
DirectoryEntry entry =
new DirectoryEntry("LDAP://" + LoginAD, Username, Password);
object obj = entry.NativeObject;
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(&(cn=" + Username + "))";
SearchResult result = search.FindOne();
if (result!=null)
{
return true;//verify password is succeed!
}
else
{
return false;//User ID or Password Error!!
}
}
作者已經移除這則留言。
回覆刪除作者已經移除這則留言。
回覆刪除作者已經移除這則留言。
回覆刪除我讀【古蘭經】之筆記: 第十章—猶努司
回覆刪除https://chinesemuslims.blogspot.com/2020/06/blog-post_8.html