C 2 0 對AD 活動目錄 的簡單操作

2021-04-24 10:22:10 字數 2964 閱讀 8063

c#2.0 對ad(活動目錄)的簡單操作

system.directoryservices.protocols.dll是.net2.0新增加的乙個針對目錄服務訪問協議處理的元件,其下只有乙個system.directoryservices.protocols命名空間。在該命名空間下,主要有ldap、dsml兩種國際標準協議的一系列實現類。通過這些類,完全可以很方便地實現對目錄的操作管理,這個實現步驟就有點類似你利用ado.net運算元據庫一樣方便。

在system.directoryservices.protocols命名空間裡,主要有這樣幾個類:ldapconnection(ldap協議方式的目錄連線類,負責建立ldap連線並繫結ldap伺服器)、dsmlsoaphttpconnection(dsml協議方式的目錄連線類、負責建立 dsml連線並繫結dsml伺服器)、addrequest/addresponse、modifyrequest/modifyresponse、 modifydnrequest/modifydnresponse、comparerequest/compareresponse、 searchrequest/searchresponse、deleterequest/deleteresponse、 dsmlrequestdocument/dsmlresponsedocument。這些類在實際程式設計應用中的關係如下圖:

使用者利用ldapconnection/dsmlsoaphttpconnection跟ldap伺服器/dsml伺服器建立連線並繫結後,即可建立一系列相應的操作請求(如增加一新物件請求addrequest),然後通過連線物件的sendrequest方法把請求命令傳送到伺服器,伺服器根據請求進行相應處理後,把應答資訊傳回給客戶端。需要指出的是,對於dsml方式的請求,還可以利用dsmlrequestdocument將 addrequest、modifyrequest、modifydnrequest、comparerequet、searchrequest和 deleterequest的任意幾個請求組合組裝起來,一併發送到dsml伺服器進行處理。

ldapconnection的使用:

建立ldap連線並進行繫結:

networkcredential credential = new networkcredential("administrator", "password");xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

ldapconnection ldapconnection = new ldapconnection("192.168.0.6");

ldapconnection.credential = credential;

ldapconnection.bind();

建立乙個請求,使其達到增加乙個ou,其名稱為myou的目的。建立後的myou其dn為ou=myou,dc=mydomain,dc=local:

string targetdn = "dc=mydomain,dc=local";

// 增加乙個名為myou的組織單元

string ou = "ou=myou," + targetdn;

string objectclass = "organizationalunit";

addrequest addrequest = new addrequest(ou, objectclass);

把請求傳送到伺服器進行處理:

ldapconnection.sendrequest(addrequest);

執行完sendrequest()後,如果沒有出現異常,那麼myou已經成功增加了。當然,如果你還需要進一步對sendrequest()操作後的應答資訊進行處理的話,也可以類似下面這樣寫,其中將在螢幕上輸出「success「的結果碼:

addresponse addresponse = (addresponse)ldapconnection.sendrequest(addrequest);

console.writeline(addresponse.resultcode.tostring());

至此,乙個ldap請求已經處理完畢。上面的完整**可以點這裡進行檢視。

using system;

using system.net;

using system.directoryservices;

using system.directoryservices.protocols;

networkcredential credential = new networkcredential("administrator", "password");

ldapconnection ldapconnection = new ldapconnection("192.168.0.6");

ldapconnection.credential = credential;

ldapconnection.bind();

string targetdn = "dc=mydomain,dc=local";

//增加乙個名為myou的ou

string ou = "ou=myou," + targetdn;

string objectclass = "organizationalunit";

addrequest addrequest = new addrequest(ou, objectclass);

addresponse addresponse = (addresponse)ldapconnection.sendrequest(addrequest);

console.writeline(addresponse.resultcode.tostring());

類似上面增加操作,還可以利用deleterequest進行刪除操作、modifydnrequest進行重新命名或移動操作、 modifyrequest進行修改物件屬性操作、searchrequest進行查詢操作、comparerequest進行驗證比較操作。

dsmlsoaphttpconnection的使用:

AD學習筆記6 活動目錄下的目錄服務

active directory提供集中組織 管理和控制對網路資源訪問的方法。1.active directory命名規範 distinguished name dc com,dc contoso,cn users,cn james smith表示使用者物件james smith在contoso.c...

C 2 0的新特性

c 2.0的新特性 1 區域性型別 就是把乙個類 介面,結構 分成幾部分,系統編譯時自動的組合 利用關鍵字partial修飾 partial class a partial class a 只要類的一部分繼承乙個父類,那整個類都繼承。沒一部分都可以繼承乙個介面,則整個類繼承所有介面 類的一部分一但被...

C 2 0 的 語法多義性

在c 2.0的語言規範中,有一段對 語法多義性 的說明。看後寫了個例子編譯了一下,如下 public partial class form1 form public class bpublic void f bool b1,bool b2 public void f bool b1 public b...