繁体   English   中英

如何在不登录的情况下检查用户域名

[英]How to check domain name of user without logging in

我有一个使用OWIN和identity2.0进行身份验证的MVC 5应用程序。 我的应用程序需要混合身份验证:

  • 对于非域用户来说,他们应该说“ dom1”,他们应该看到基于表单的页面
  • 对于域“ dom1”上的用户,应通过Windows身份验证登录。

我想知道在用户首次点击我的“ Account/Login操作时如何获取未经身份验证的用户的域名。

我用过 :

PrincipalContext pcontext = new PrincipalContext(ContextType.Domain);
var domainName = pcontext.ConnectedServer;

System.Security.Principal.WindowsIdentity context = System.Security.Principal.WindowsIdentity.GetCurrent();
var domainName = pcontext.Name;

但是这两个都显示了部署网站的计算机的域名,而不是客户端域的域名。

非常感谢您的帮助,如果我有任何失误,请纠正我。

域名可以在这里看到

Environment.UserDomainName

获取与当前用户关联的网络域名。

根据MSDN文档

UserDomainName属性首先尝试获取当前用户的Windows帐户名的域名部分。 如果该尝试失败,则此属性尝试获取与UserName属性提供的用户名关联的域名。 如果由于主机未加入域而导致尝试失败,则返回主机名。

如果您未通过身份验证,则将不幸地看到主机名。 我无法解决这个问题。

您还可以在此处获取客户端请求的IP

HttpRequest.UserHostAddress

“没有身份验证”? 你不能 必须先完成Windows身份验证,然后才能看到用户的帐户。

这是由于Windows身份验证的工作原理:

  1. 浏览器匿名访问该站点。
  2. IIS返回401响应
  3. 浏览器通过使用包含的Windows凭据再次发出请求来做出响应
  4. IIS使用域控制器验证凭据
  5. IIS将经过验证的Windows凭据传递给您的应用程序。

在身份验证成功完成之后,您的应用程序唯一可以看到有关用户帐户的任何信息的时间是在步骤5。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM