2012-06-12 64 views
0

我有兩個域名,MINE和他們的。 MINE是我的本地域名,並且與他們有着單向的信任(使用LDAPS端口636),所以MINE相信他們,但他們不信任MINE。我可以將他們的用戶添加到MINE的組中,並讓用戶從THE登錄到MINE網絡上的機器和應用程序。信任似乎正常工作。從單向信任訪問用戶信息

我寫一個小.NET應用程序(不ASP.Net)通過廣域網來測試連接。我們有一個應用程序沒有在MINE中看到來自他們的用戶。其他應用程序,如SharePoint,工作正常。

我嘗試使用ASP.Net 4選項與System.DirectoryServices.AccountManagement對象,如PrincipalContext,UserPrincipal,GroupPrincipal等簡單的代碼片段

PrincipalContext domainContext = GetDomainContext(DomainName, ConnectionPort, 
     UseSpecifiedCredentials, Credentials); 

    GroupPrincipal theGroup = GroupPrincipal.FindByIdentity(domainContext, 
     IdentityType.SamAccountName, GroupName); 

    PrincipalCollection theUsers = theGroup.Members; 

    var users = from u in theUsers 
       select u.Name; 

    return users.ToArray(); 

,當我直接連接到MINE這一切的偉大工程。這個問題與連接到他們的問題。無論是LDAPS交通的信任1種方式返回錯誤:

System.DirectoryServices.Protocols.LdapException: The LDAP server is unavailable. 

所以我切換到.NET中使用的DirectoryEntry,的DirectorySearcher等,這實際上是對工作他們域2度的變化。

List<string> userNames = new List<string>(); 
    string searchString = string.Format("(sAMAccountName={0})", GroupName); 
    SearchResult result = SearchAD(DomainName, ConnectionPort, searchString); 

我可以直接連接到THEIRS域,在代碼中使用一些模擬。

當我查詢在我的組,我回來了,從他們的用戶,而不是用戶帳戶的SID。

The following users are a member of testGroup: 
CN=S-1-5-21-....,CN=ForeignSecurityPrincipals,DC=MINE,DC=local 
CN=S-1-5-21-....,CN=ForeignSecurityPrincipals,DC=MINE,DC=local 

我試過這個模擬,以及作爲用戶從他們運行它,但沒有運氣。

當用戶在礦山時,如何從他們的用戶獲取用戶信息?我必須採取上述CN/SID並查詢THEIRS域名嗎?我在.Net 4中丟失了什麼?

+0

Bueller?Bueller –

回答

0

我假設你有你的ASP.NET機器運行在MINE中。如果你要確保你使用的域用戶帳戶從他們的域名來運行應用程序

你System.DirectoryServices.AccountManagement做法應該只是工作。在正常的單向信任配置中(除非您正在進行選擇性身份驗證信任),THEIR的域用戶帳戶應具有從MINE和THEIR讀取的權限。

爲了確保你從他們的域中的域用戶,你可以簡單地set the AppPool identity。當然,你也可以使用模擬來做到這一點。

+0

我使用的是.NET客戶端應用程序,和我的代碼中運行模擬,但我已經嘗試了運行方式選項,並選擇他們的用戶..我會嘗試了這一點。 –

+0

它似乎我的模擬實際上不是冒充我需要它的THEIRS用戶帳戶。首先要解決這個問題。 –

+1

@DavidLozzi確保您所呼叫[LogonUserEx(http://msdn.microsoft.com/en-us/library/windows/desktop/aa378189%28v=vs.85%29.aspx),然後按[ImpersonateLoggedOnUser( http://msdn.microsoft.com/en-us/library/windows/desktop/aa378612%28v=vs.85%29.aspx)進行模擬。如果您在未提供密碼的情況下模擬已登錄的用戶,則需要將您的IIS計算機設置爲受信任進行委派。 –