SD ng LDAP

Một phần của tài liệu Mini admanger (Trang 44)

3.3.1 ng d ng xác th c dùng LDAP

3.3.2 M t s d ch v s d ng nghi th c LDAP

B ng cách k t h p các thao tác LDAP đ n gi n này. Th m c client có th th c hi n các thao tác ph c t p nh các ví d sau đây

M t ch ng mail có th th c hi n dùng ch ng ch đi n t ch a trong th m c trên server LDAP đ kí, b ng cách g i yêu c u tìm ki m cho LDAP server , LDAP server g i l i cho client ch ng ch đi n t c a nó sau đó ch ng trình mail dùng ch ng ch đi n t đ kí và g i cho Message sever. Nh ng góc đ ng i dùng thì t t c quá trình trên đ u ho t đ ng m t cách t đ ng và ng i dùng không ph i quan tâm

Hình 3 - 17 m t mô hình đ n gi n l u tr

Netscape Message server có th s d ng LDAP directory đ th c hi n ki m tra các mail. Khi m t mail đ n t m t đa ch , messeage server tìm ki m đa ch email trong th m c trên LDAP server lúc này Message server bi t đ c h p th ng i s d ng có t n t i và nh n th .

LDAP client LDAP server

Tìm ki m user A trên LDAP server

Client nh n entry c a user A tr v

Ch ng 3: Gi i thi u v LDAP User A Login {DN,PW} Application DUA 1 Bind {DN-AP,PW-AP} 2 Compare {DN,PW} LDAP Serserver Hình 3 - 18 dùng LDAP đ qu n lý th

Dùng LDAP xác th c m t user đ ng nh p vào m t h th ng qua ch ng trình th m tra, ch ng trình th c hi n nh sau đ u tiên ch ng trình th m tra t o ra m t đ i di n đ xác th c v i LDAP thông qua (1) sau đó so sánh m t kh u c a user A v i thông tin ch a trong th m c. N u so sánh thành công thì user A đã xác th c thành công

Hình 3 - 19 xác th c dùng LDAP

LDAP server Message Serserver

3 . Message server nhân di n đ c h p th ng i dùng và sau đó nh n th 1. M t email đn t i đa ch Barabara.Jensen@abc.com 2. Message server dò tìm đa ch email trong th m c

Ch ng 3: Gi i thi u v LDAP

PublicSharedFunction Login(ByVal UserName AsString, ByVal Password AsString) As ADManager.LoginResult 'first, check if the logon exists based on the username and password

If IsUserValid(UserName, Password) Then

Dim dirEntry As DirectoryEntry = GetUser(UserName) IfNot dirEntry IsNothingThen

'convert the accountControl value so that a logical operation can be performed

'to check of the Disabled option exists.

Dim accountControl AsInteger = Convert.ToInt32(dirEntry.Properties("userAccountControl")(0)) dirEntry.Close()

'if the disabled item does not exist then the account is active

IfNot IsAccountActive(accountControl) Then

Return LoginResult.LOGIN_USER_ACCOUNT_INACTIVE Else Return LoginResult.LOGIN_OK EndIf Else Return LoginResult.LOGIN_USER_DOESNT_EXIST EndIf Else Return LoginResult.LOGIN_USER_DOESNT_EXIST EndIf EndFunction

Ch ng 4: Tìm hi u system DirectoryServisces

Ch ng 4: Tìm hi u System.DirectoryServices

4.1. T ng quan v System.DirectoryServices

System.DirectoryServices là m t namespace trong .Net Framework, nó cho phép truy c p đ n Active Directory thông qua k thu t .NET. V i System.DirectoryServices b n có th s d ng các ngôn ng l p trình C#.NET và Visual Basic.NET đ phát tri n các ng d ng có nhu c u truy c p các thông tin trong Active Directory nh các ng i s d ng, các máy tính, các tài nguyên chia s trong m t domain.

S đ sau cho th y cách s p x p c a các API danh b , bao g m c l p mã qu n lý:

Hình 4.1 (adsbygoogle = window.adsbygoogle || []).push({});

đây, trong ph m vi đ tài này chúng ta s s d ng System.DirectoryServices namespace đ truy xu t Database Active Directory trên máy domain controller. Và có l không c n ph i nói nhi u h n n a, chúng ta s xem cách s d ng System.DirectoryServices namespace c th ph n ti p theo.

4.2. Cách s d ng System.DirectoryServices

4.2.1. a System.DirectoryServices vào ng d ng

s d ng System.DirectoryServices, d nhiên đi u đ u tiên là chúng ta ph i

đ a System.DirectoryServices vào ng d ng. Trong môi tr ng l p trình, t i project mà b n mu n s d ng System.DirectoryServices:

1. Ch n Website > Add Reference …

Ch ng 4: Tìm hi u system DirectoryServisces

Hình 4.2 Add Referennce System.DirectoryService trong VS2005

3. Ch nđ a dòng sau vào mã: Imports System.DirectoryServices

4.2.2. Liên k t và s d ng các đ i t ng danh b 4.2.2.1. i t ng danh b

M i tài nguyên m ng đ c đ i di n b ng m t đ i t ng trong danh b . Các đ i t ng danh b có các đ c đi m sau:

Tên. Ví d , trong s đ bên d i tên c a m t đ i t ng ng i dùng là CN = Jeff Smith.

Cha. Các đ i t ng m ng đ u k th a và có m t đ i t ng cha cho đ n khi b n dò đ n đ i t ng g c trên đnh c a cây k th a.

ng d n. ng d n c a đ i t ng danh b đ c xây d ng v i tên c a đ i t ng cha đ t tr c tên đ i t ng cho đ n đ i t ng g c. Ví d , đ ng d n c a đ i t ng ng i dùng CN=Jeff Smith là: DC=abc, DC=COM, OU=Sales, CN=Jeff Smith. Các đ ng d n s d ng m t cú pháp đ c đnh b i đ c t LDAP. Hình 4.3 DC=abc, DC=COM OU= Sales CN=Jeff Smith CN=Britta Simon

Ch ng 4: Tìm hi u system DirectoryServisces

4.2.2.2. Liên k t đ n các đ i t ng danh b

đây, trong ph n này tôi không mu n các b n b i r i h n n a vì m t lo t các khái ni m, đnh ngh a, gi i thi u,…Do đó chúng tôi s đ a ra các ví d c th

mà chúng tôi tin ch c là hoàn toàn d hi u đ i v i t t c m i ng i. Và t các ví d này các b n có th d dàng áp d ng l i cho các m c đích c a mình.

Liên k t đ n domain hi n hành: trong ngôn ng VisualBasic.NET b n ch c n khai báo:

Dim ent As New DirectoryEntry()

Liên k t đ n m t máy ch c th : b n ch c n đ a tên máy ch mà b n mu n

k t n i đ n. Ví d nh b n mu n liên k t đ n máy ch tên là server1 thì b n s khai báo nh sau:

Dim ent As New DirectoryEntry("LDAP://server01")

Public Shared Function GetDirectoryEntry() As DirectoryEntry Dim dirEntry As DirectoryEntry = New DirectoryEntry()

dirEntry.Path = ADFullPath ' "LDAP://192.168.1.1/CN=Users;DC=ABC;DC=COM"

dirEntry.Username = ADAdminUser ' "admin"

dirEntry.Password = ADAdminPassword '"adminpass"

Return dirEntry End Function

Liên k t đ n m t domain c th : t ng t đ liên k t đ n m t domain c th b n s ph i đ a vào tên c a domain y.

Dim ent As New DirectoryEntry("LDAP://abc.com") Liên k t đ n m t đ i t ng c th : (adsbygoogle = window.adsbygoogle || []).push({});

Khi b n c n ch nh s a hay đ c thông tin t m t đ i t ng c th , b n s đ a tên c a đ i t ng đó vào. Gi s nh ví d trong ph n 4.2.2.1, n u b n mu n liên k t đ n đ i t ng Jeff Smith, b n s đ a vào tên đ y đ c a đ i t ng đó:

+ N u b n bi t ch c ch n đ i t ng mà mình mu n liên k t đ n thu c domain c a mình thì b n ch c n khai báo:

Dim ent As New DirectoryEntry("LDAP://CN=JeffSmith,OU=Sales,DC=abc,DC=Com")

+ N u b n bi t đ i t ng đó thu c v máy ch nào:

Dim ent As New DirectoryEntry("LDAP:// server01/CN=Jeff Smith,OU= Sales,DC=abc,DC=Com")

+ N u b n bi t đ i t ng đó thu c v domain nào:

Ch ng 4: Tìm hi u system DirectoryServisces

Sau khi đã liên k t đ n m t đ i t ng mong mu n, b n có th s d ng các thông tin c a chúng m t cách tùy thích. Nh v i đ i t ng ng i dùng là Jeff Smith, b n có th l y s nhà, s đi n tho i, nhóm làm vi c, Reset password…c a đ i t ng này.

PublicSharedSub SetPassword(ByVal dEntry As DirectoryEntry, ByVal sPassword AsString) Dim oPassword AsObject() = NewObject() {sPassword}

Dim ret AsObject = dEntry.Invoke("SetPassword", oPassword) dEntry.CommitChanges()

EndSub

Và đ k t l i ph n này chúng tôi mu n các b n xem m t ví d n a, m t ví d mà tôi đã s d ng đ l y v tên c a các máy tính đã login domain c a mình: PublicSharedFunction ListAllADComputers() As DataSet

Dim dirEntry As DirectoryEntry = = New DirectoryEntry()

dirEntry.Path = ADFullPath ‘"LDAP://192.168.1.1/CN=Users;DC=ABC;DC=COM"

dirEntry.Username = ADAdminUser ' "admin"

dirEntry.Password = ADAdminPassword '"adminpass"

Dim dsComputerName AsNew DataSet()

' 1. Search the Active Directory for all objects with type of computer

Dim dirSearcher As DirectorySearcher = New DirectorySearcher(dirEntry) dirSearcher.Filter = ("(objectClass=computer)")

' 2. Check the search results

Dim dirSearchResults As SearchResult

Dim dtList As DataTable = dsComputerName.Tables.Add("Computer") dtList.Columns.Add("ComputerName")

' 3. Loop through all the computer names returned

ForEach dirSearchResults In dirSearcher.FindAll()

'4. Check to ensure the computer name isnt already listed in the collection

IfNot pcList.Contains(dirSearchResults.GetDirectoryEntry().Name.ToString()) Then

' 5. Add the computer name to the collection (since it dont already exist)

pcList.Add(dirSearchResults.GetDirectoryEntry().Name.ToString()) Dim drGroup As DataRow = dtList.NewRow()

drGroup("ComputerName") = dirSearchResults.GetDirectoryEntry().Name.ToString() dtList.Rows.Add(drGroup)

EndIf (adsbygoogle = window.adsbygoogle || []).push({});

Next

' 6. Return the results

' Return pcList

Return dsComputerName

Ch ng 5: ng d ng và các ch c n ng c a ng d ng

Ph n 3: Thi t k và cài đ t ng d ng

Ch ng 5: ng d ng và các ch c n ng c a ng d ng

5.1. Gi i thi u ch ng trình

Ch ng trình MINI ADMANGER đ c xây d ng d i d ng d ch v web.

Ch ng trình đ c chia làm hai ph n:

Ph n I: ph n giao di n dùng đ giao ti p v i ng i dùng ch y trên n n web application đ c dùng đ g i (Request) và nh n (Response) các yêu c u c a ng i dùng.

Ph n II: ph n ti p nh n các yêu (Request) và tr l i các yêu c u (Response) và s lý các yêu c u c a ng i dùng. Ph n này còn làm nhi m v k t n i v i Active Directory Server thông qua giao th c LDAP. Ph n II ch y trên n n Web Service.

Hai ph n trên đ c cài đ t đ ch y trên Web Server IIS. Nên ng i dùng không c n cài đ t ng d ng v n có th quàn tr đ c AD. Nh v y thì b n có th yên tâm s d ng máy tính n i m ng, đi n tho i di đ ng k t n i GPRS hay Pocket PC k t n i Wireless đ qu n tr AD. 5.2. Các l p chính c a ch ng trình Ch ng trình g m các l p chính sau: Hình 5-1 Các l p chính c a ch ng trình Request Remote Business LDAP Access Response AD Database Web Form Event AP Server Client Request Response

Ch ng 5: ng d ng và các ch c n ng c a ng d ng

Ph n I: Client L p Web Form

L p này ch a Web form dùng đ giao ti p v i ng i dùng và d ch v bên d i. Ng i dùng s th c hi n các thao tác Select, Insert, Update, Delete trên Web form này. Sau khi ng i dùng đã th c hi n xong các thao tác và b m ch n nút submit thì ch ng trình s th c hi n l y các thông tin t Web form và chuy n thành các Request đ g i đ n Web service và nh n v các Response. L p này đóng vai trò t ng VIEW trong mô hình Model-view-controller (MVC). Và ph n code behind đóng vai trò nh t ng Controller.

Ph n II: Application Server (Web Service) L p Business Logic

File đnh ngh a class Business Logic là file đnh ngh a logic nghi p v , mà đ c đ nh ngh a cho t ng event . Là file s d ng LDAP Data Access module mà đ c Code v m t ki n trúc và v a th c hi n truy c p Active Directory , v a th c thi logic nghi p v .

t tên theo lu t d i đây cho tên class và tên file c a file đnh ngh a business logic. G i businessLogicID đ ID đ c thành là Biz[ID màn hình]_[chu i].

Screen ID ch ph n mà đã b [Frm] đ u tiên

Bussiness LogicID đ c đnh ngh a trong [khái quát x lý] c a b ng thi t k c b n

Tên file đnh ngh a business logic Biz[ID màn hình]_[ chu i].vb Tên business logic Biz[ID màn hình]_[ chu i]

Ví d : ID màn hình:frmG001_ListGroup Tên màn hình: li t kê thông tin t t c các nhóm trong AD.

Tên file đnh ngh a business logic :BizG001_ListGroup.vb Tên business logic: BizG001_ListGroup

Tr ng h p th c thi (implement) business logic, t o class AbstractBusinessLogic mà cho phép t o ch c n ng c b n c a businesslogic, r i implement logic b ng cách overwrite function ExecuteLogic. Vi c overwrite ExecuteLogic là b t bu c đ i v i các class con k th a t AbstractBusinessLogic. Chúng ta s đ nh ngh a function

ExecuteLogic() trong kh i Try ….. Catch … Finally l p cha nên t t c l p con k th a t l p cha s đ c Try ….. Catch 100% giúp ch ng trình ch u l i t t h n. Input Parameter c n đ th c hi n Bussiness Logic và Output Parameter truy n k t qu th c hi n qua n i g i thì đnh ngh a nh là Property c a Bussiness Logic Class mà s Coding toàn b . Input Parameter thì đ nh ngh a nh là WriteOnly Property, Output Parameter thì đnh ngh a nh là ReadOnly Property, và s đnh ngh a chính xác xem Property đang đ c đ nh ngh a là Property c a n i input output nào

Tr ng h p x lý business ph c t p, function ExecuteLogic s tr nên quá dài, không th đ c đ c code ch ng trình, tính b o trì l i th p. Khi đó, đ review business logic t t h n, thì implement function vào m t function đ n gi n, phân ra các function các

Ch ng 5: ng d ng và các ch c n ng c a ng d ng

đ n v x lý t p trung. Các hàm mà đnh ngh a m c đích này, thì s đ nh ngh a modifier access là Private.

L p remote (adsbygoogle = window.adsbygoogle || []).push({});

Ch c n ng remote method, nh là WEB Service, t bên trong remote method đ c request t client, g i BusinessLogic, r i tr k t qu v nh là response. nh ngh a 1 method cho 1 BusinessLogic. t tên cho tên method và signal theo lu t d i đây. Tên method Remote [BusinessLogicID]

i s [BusinessLogicID]Request

Giá tr tr v [BusinessLogicID]Response

Ví d ) ID màn hình: frmG001_ListGroup.aspx Tên màn hình: X lý l y thông tin t t c các Group.

Tên method RemoteBizG001_ListGroup i s BizG001_ListGroup_Request

Giá tr tr v BizG001_01_ListGroup_Response

<WebMethod()> _

PublicFunction RemoteBizG001_ListGroup(ByVal request As BizG001_ListGroup_Request) As

BizG001_01_ListGroup_Response

' [VN] Khai bao logic va response

Dim logic As BizG001_ListGroup = Nothing

Dim response As BizG001_01_ListGroup_Response = Nothing

Try

logic = New BizG001_ListGroup()

response = New BizG001_01_ListGroup_Response

LogHistory(Nothing, "RemoteBizG001_01_ListGroup", "Execute BizG001_01_ListGroup", "") ' [VN]Goi business logic roi thiet dinh parameter input

logic.ADAdminPassword = request.ADAdminPassword logic.ADAdminUser = request.ADAdminUser logic.ADFullPath = request.ADFullPath logic.ADServer = request.ADServer logic.prostrSearch = request.prostrSearch '[VN]Thuc hien business logic

logic.Execute()

'[VN]Kiem chung ket qua thuc hien cua business logic,thiet dinh return code.

'[VN]Truong hop businesslogic thuc hien that bai, thiet dinh Error code,tra ve error message

If logic.NumError = 0 Then response.ReturnCode = LogicReturnCode.LOGIC_RETUEN_CODE__SUCCEEDED response.proDsList = logic.proDsList Else response.ReturnCode = LogicReturnCode.LOGIC_RETURN_CODE__FAILED response.ErrMsg = logic.ErrorMsg EndIf Catch ex As Exception

LogFatal(Nothing, "RemoteBizA0101_01", "ERROR_MSG__REMOTE_METHOD_EXECUTION_FAILED", ex) If response IsNotNothingThen

'response.AddErrorMsg(ERROR_MSG__REMOTE_METHOD_EXECUTION_FAILED & ex.Message)

EndIf

EndTry

'[VN]gui den client response da thiet dinh.

Return response EndFunction

Ch ng 5: ng d ng và các ch c n ng c a ng d ng

L p request/ response

Class remote method request/ responce là class quy đnh Input parameter cho remote method và output parameter tr v sau khi th c hi n remote method. nh ngh a cho class request/ responce này, t t c input parameter cà output parameter tr v khác nhau tùy vào Businesslogic nh là property, và n u g i remote method t client thì thông qua remote method request, implement đ l y k t qu v cho remote method response. (adsbygoogle = window.adsbygoogle || []).push({});

t tên cho tên class remote method request/ responce theo lu t d i đây. Tên remote method request [BusinessLogicIID] Request

Tên remote method responnce [BusinessLogicIID] Response

Ví d ) ID màn hình: frmT0102 Tên màn hình: X lý l y thông tin nhân viên c a màn hình tính gi

Tên remote method request: BizG001_ListGroup_Request.vb

Tên remote method responnce: BizG001_01_ListGroup_Response.vb

Hàm chung/ nh ngh a Constant

Hàm chung và đ nh ngh a Constant đ c s d ng trên toàn b h th ng thì s d ng hàm chung, constant đ c đnh ngh a trên File ADManager.vb

Thi t đnh Log (web.config)

Vi c t o Log Output trên Application thì t o Log Output Level mô t trên log4net Action c a app.config (n u Server Program là web.config), và t o n i Output c a File Log. Ph ng th c Output Log thì t n t i 2 lo i: th 1 là ph ng th c Rotation File Log, t o File Log t ng ngày, ph ng th c 2 là Output toàn b vào 1 File Log. Nh ng cái này có th s d ng thay th .

[Thay th ph ng th c Output Log]

Ph ng th c Output Log thì có th ch n RollingLogFileAppender mà Rotation t ng ngày và LogFileAppender mà Output toàn b vào 1 File. Vi c thay th thì thi t đ nh giá tr RollingLogFileAppender ho c LogFileAppender vào nh ng ch bên d i. <root>

<!-- Setting of debugging level (please set the actual operational time above INFO level) --> <!--[The log level which it can set]DEBUG,INFO,WARN,ERROR,FATAL -->

<level value="DEBUG"/>

<appender-ref ref="RollingLogFileAppender"/> * The value of ref here is modified

Vi c t o Log Output trên Application thì t o Log Output Level mô t trên log4net Action c a app.config (n u Server Program là web.config), và t o n i Output c a File Log.

Ph ng th c Output Log thì t n t i 2 lo i: th 1 là ph ng th c Rotation File Log, t o File Log t ng ngày.

Ph ng th c 2 là Output toàn b vào 1 File Log. Nh ng cái này có th s d ng thay th .

[Thay th ph ng th c Output Log]

Ph ng th c Output Log thì có th ch n RollingLogFileAppender mà Rotation t ng

Một phần của tài liệu Mini admanger (Trang 44)