我正在使用User.Identity.Name
让用户使用我的网络应用登录。
然后我查询AD以获取该用户的属性:
string[] sx = User.Identity.Name.Split('\\');
var username = sx[sx.Count() - 1];
DirectorySearcher searcher = new DirectorySearcher();
searcher.Filter = string.Format(Filter, username);
SearchResult user = searcher.FindOne();
现在我想添加域名支持:
string[] sx = UserIdentityName.Split('\\');
var username = sx[sx.Count() - 1];
var domain = sx[0];
DirectoryEntry entry = new DirectoryEntry("LDAP://DC=" + domain));
DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = string.Format(Filter, username);
SearchResult user = searcher.FindOne();
这不起作用,可能是因为域名不完全合格。所以我需要DC=intra
我需要DC=intra,DC=contoso,DC=com
,DC=sub
我需要DC=sub,DC=intra,DC=contoso,DC=com
。
如何仍然连接到正确的AD域?我可以为登录的用户获取完全限定的用户名(UPN名称),还是可以获得用户登录的正确AD域,或者我如何实现此目的?
答案 0 :(得分:0)
你发现这不会起作用。相反,使用以下内容基于SID进行绑定:
WindowsIdentity current = (WindowsIdentity)User.Identity;
DirectoryEntry userObject = new DirectoryEntry("LDAP://<SID=" + current.User.ToString() + ">");