2013-02-22 206 views
-1

我有一個運行在IIS 7.5上的自定義HTTP模塊,並且這些請求將來自同一個Active Directory環境中的不同計算機。 是否有可能讓我在HTTP模塊運行服務器端從請求(或查詢,如果我知道LDAP路徑?)獲取當前用戶(他們的AD名?)?從客戶端請求,服務器端獲取Active Directory用戶?

我不是AD專家,但我查看了模塊中HTTPApplication實例(參見下文)中出現的不同屬性,我沒有看到任何明顯的內容。

Private Sub AuthenticateRequest(sender As Object, e As EventArgs) 

     Dim oHttpApplication As HttpApplication = CType(sender, HttpApplication) 
     '... 
     ' Get AD Info from oHttpApplication.Request? 
     '... 
End Sub 

有沒有人知道這是可能的或知道的方法來實現這一目標?

UPDATE:

我下面加了我的解決方案。

+0

...反對後的評論會很好。 – lhan 2013-03-06 15:27:45

回答

0

我的解決方案 - 在VB.NET:

Dim username As String = Thread.CurrentPrincipal.Identity.Name 

注意:對我的鏈接中問題的回答繼續使用PrincipalContextUserPrincipal對象,但對於我的場景,我所需要的只是用戶名。我還想指出的是,測試該解決方案,這條線時:

pc = new PrincipalContext(ContextType.Domain, "active.directory.domain.com") 

而且工作正常不帶域對我來說:

pc = new PrincipalContext(ContextType.Domain) 

所以希望這將有助於有人在未來!

0

修改IIS設置:

在IIS 禁用匿名身份驗證和使 Windows身份驗證。

修改Web應用程序配置文件:

啓用模擬

<configuration> 
    <system.web> 
    <identity impersonate="true"/> 
    </system.web> 
</configuration> 

C#代碼:

using System.Security.Principal 


var user = WindowsIdentity.GetCurrent().Name; 
+0

謝謝。儘管我已經嘗試過。對我而言,它返回綁定到服務器上運行的ApplicationPoolIdentity帳戶的用戶。我需要知道誰在發送請求(即來自客戶端)。 – lhan 2013-02-25 14:22:29

+0

我修改了我的答案。如果用戶在同一個局域網中,這應該工作。 – developer747 2013-02-25 14:51:39

+0

再次感謝 - 但我已經設置了模擬。請看我找到的解決方案。 – lhan 2013-02-25 16:04:25

相關問題