簡體   English   中英

如何獲得其他域中用戶的UserPrincipal?

[英]How can I get a UserPrincipal for a user in a different domain?

以下代碼非常適合我所在域中的用戶(例如,“ TESTER”而不是“ DEVELOPER”),但我不知道如何搜索比當前域更高的域名。 我嘗試使用PrincipalSearcher類進行搜索的變體組合,但是我不確定如何通過電子郵件地址或用戶名傳遞搜索以查找組織中的其他域,即使它們都位於單個林中也是如此。

var name = "DEVELOPER\\JULIANI99";
var p = UserPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain), name);

FindByIdentity不適用於搜索森林。

我嘗試過這樣的事情:

var d = new PrincipalContext(ContextType.Domain, "domain.com:3268", "DC=com");
var p = UserPrincipal.FindByIdentity(d, IdentityType.SamAccountName, username);

但是我一直收到錯誤消息,說轉診已返回。 您可能會有所不同。 “ 3268”端口告訴它使用全局目錄(林范圍內的搜索)。 根目錄(我的目錄為“ DC = com”)必須是您林中所有域的公共目錄。 因此,如果您所有的域都是“ domain.com”的子域,則可以輸入“ DC = domain,DC = com”。 但是,如果您在同一個AD林中包含“ domain.com”和“ otherdomain.com”部分,則該方法將無效。

FindByIdentity也無法通過電子郵件地址進行搜索,因此使用PrincipalSearcher可能會更好。

如果遇到與我相同的引薦錯誤,則可以告訴它遵循引薦:

PrincipalSearcher srch = new PrincipalSearcher(User);
((DirectorySearcher) srch.GetUnderlyingSearcher()).ReferralChasing = ReferralChasingOption.All;

暫無
暫無

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

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