我的Active Directory域中的服务器上的IIS实例上有一个Web表单。
当域内的用户访问网络表单时,我是否可以使用类似的方式以编程方式捕获其AD用户名。
Page.User.Identity.Name
或者只是报告运行IIS的帐户名称?
我是否必须让用户专门登录才能在AD中查找?
如果没有,是否有我可以捕获的其他标识符,或者出于安全考虑,这是不可能的?
答案 0 :(得分:1)
如果您的用户位于同一个域中,则可以使用集成Windows身份验证(IWA)。通过使用该身份验证方法,您的应用程序中将自动访问该身份。
ASP.NET site有一个关于使用IWA设置MVC站点的教程。我知道你正在使用WebForms,但代码是相当自我解释的。
如果要查询活动目录中的其他信息,只需使用类似于以下内容的内容(假设您有.NET 3.5或更高版本,其中System.DirectoryServices.AccountManagement库可用):
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "yourDomainName")) {
using (UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.UserPrincipalName, theUserName)) {
if (user != null) {
//Do something with the user object.
}
}
}