使用User.Identity.Name连接到正确的广告域
本文关键字:User Identity Name 连接 使用 | 更新日期: 2023-09-27 18:11:09
我使用User.Identity.Name
让用户登录我的web应用程序。
然后我正在查询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域,或者我如何实现这一点?
这是行不通的。相反,应该使用如下内容基于SID进行绑定:
WindowsIdentity current = (WindowsIdentity)User.Identity;
DirectoryEntry userObject = new DirectoryEntry("LDAP://<SID=" + current.User.ToString() + ">");