2014-09-25 64 views
1

我是新來的LDAP和Active Directory身份驗證,我只是學習一些東西有關LDAP認證,並與示例應用程序進行LDAP和ActiveDirectory的認證在C#

我只是檢查是否用戶存在於ActiveDirectory的或不

public static bool DoesUserExist() 
    { 
    using (var domainContext = new PrincipalContext(ContextType.Domain,Environment.UserDomainName)) 
    { 
    using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, Environment.UserName)) 
       { 
        return foundUser != null; 
       } 
      } 
     } 
在我們的本地系統

其工作正常,但是當我在ActiveDirectory的服務器託管,我試圖與服務器的IP地址訪問此,我面臨的一些問題,像

ContextType.Domain,Environment.UserDomainName and Environment.UserName 

這三個值是從服務器的信息來未用戶誰訪問這個應用程序

所以,請幫助我如何獲得用戶信息(誰訪問這個應用程序),這樣我需要傳遞這些信息到服務器,並需要檢查用戶是否爲活動目錄用戶

+0

這是一個ASP.NET應用程序嗎? – Rhumborl 2014-09-25 16:59:49

+0

是的... ActiveDirectory身份驗證使用LDAP – 2014-10-01 12:12:41

回答

0

Environment.UserDomainName返回域名部分Environment.UserName,例如「mydomain.com」,所以你不想那樣。

Environment.UserName本身將返回當前「登錄到Windows」的用戶,即應用程序池用戶 - 請參閱MSDN

您最好檢查當前Web請求的標識,因此在MVC Controller或WebForms頁面中使用this.User

或者,如果你使用的是Windows身份驗證或掛鉤窗體身份驗證到AD,當前ThreadPrincipal應該是當前請求的用戶,所以你可以使用Thread.CurrentPrincipal.Identity

+0

是的,我嘗試使用** Thread.CurrentPrincipal.Identity.Name **,但在本地系統工作正常,但我託管在服務器上,但它仍然返回服務器用戶名只有不客戶端用戶名 – 2014-10-02 10:07:30