簡體   English   中英

在ASP.NET中查詢LDAP DirectoryEntry的問題

[英]Issue Querying LDAP DirectoryEntry in ASP.NET

我讓用戶通過Active Directory登錄到我的應用程序,然后從其AD信息中提取有關該用戶的信息,如下所示:

Dim ID as FormsIdentity = DirectCast(User.Identity, FormsIdentity)
Dim ticket as FormsAuthenticationTicket = ID.Ticket
Dim adDirectory as New DirectoryEntry("LDAP://DC=my,DC=domain,DC=com")
Dim adTicketID as String = ticket.Name.Substring(0, 5)
Session("people_id") = adDirectory.Children.Find("CN=" & adTicketID).Properties("employeeID").Value
Session("person_name") = adDirectory.Children.Find("CN=" & adTicketID).Properties("displayName").Value

現在,我希望能夠模擬其他用戶...以便可以以他們的身份“測試”該應用程序,因此我在頁面上添加了一個文本框和一個按鈕,單擊該按鈕時,該文本被分配給會話像這樣的變量:

 Session("impersonate_user") = TextBox1.Text

當頁面重新加載時,我檢查Session(“ impersonate_user”)是否具有除“”以外的值,然后嘗試使用此會話變量查詢Active Directory,如下所示:

If CStr(Session("impersonate_user")) <> "" Then
  Dim adDirectory as New DirectoryEntry(LDAP://DC=my,DC=domain,DC=com")
  Dim adTicketID as String = CStr(Session("impersonate_user"))
  Session("people_id") = adDirectory.Children.Find("CN=" & adTicketID).Properties("employeeID").Value
  Session("person_name")= adDirectory.Children.Find("CN=" & adTicketID).Properties("displayName").Value
Else
  [use the actual ticket.name to get this info.]
End If

但這是行不通的。 而是,它在第​​一行Session上引發錯誤,指出“ DirectoryServicesCOMException未由用戶代碼處理。服務器上沒有此類對象。” 為什么? 我知道我給它一個有效的用戶名! 投射會話時是否發生了奇怪的事情? 每個方法之間的代碼本質上是相同的,只是在一個方法中,而不是從票證中提取。名稱我是從會話變量中提取登錄名的,我將使用AD查找。

也許您的進程正在運行的身份需要訪問活動目錄的權限。 您可以通過更改您的應用程序在IIS應用程序池中運行的身份來實現。

在文本框中輸入了什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM