【问题标题】:How to get AD properties for user of web browser如何获取 Web 浏览器用户的 AD 属性
【发布时间】:2020-10-20 00:04:10
【问题描述】:

此代码获取我们组织中 AD 用户的属性,特别是运行网站的用户,服务帐户(因此无论用户运行网站,结果都是相同的):

DirectoryEntry entry = UserPrincipal.Current.GetUnderlyingObject() as DirectoryEntry;
if (entry != null)
{
    foreach (string name in entry.Properties.PropertyNames)
    {
        Response.Write(entry.Properties[name].Value.ToString() + "</br>");
    }
}

但是,我需要为运行 Web 浏览器的用户获取这些属性。我想我可以从 HttpContext 中获取这些,但找不到那个主体或 GetUnderlyingObject() 方法。

如何为登录到 Windows 计算机并运行 Web 浏览器的用户获取相同的 AD 属性列表?

【问题讨论】:

  • 这真的不可用。您有时可以在 HTTP 标头中找到 似乎 是您想要的东西,但这只是默认设置。 用户可以很容易地覆盖它以显示他们想要的任何用户名。 如果您正在运行一个网络应用程序,而您的代码仅限于浏览器,那么您将需要某种实际的身份验证片。您可以使用 SAML/OAuth 来简化此操作,但您的用户仍需要登录。
  • @JoelCoehoorn 谢谢,乔尔。
  • 这取决于您所说的“登录到 Windows 机器并运行 Web 浏览器的用户”是什么意思。如果您想在没有用户对您的网站进行身份验证的情况下这样做,那么 Joel 的评论是准确的 - 您不能这样做。但是,如果您在您的网站中使用 Windows 身份验证,并且您想引用当前登录到您网站的用户(可能不是登录到 Windows 的同一用户,但在大多数情况下可能是),那么 erastl 的答案就是去做。

标签: asp.net webforms active-directory


【解决方案1】:

string user = HttpContext.Current.User.Identity.Name.ToString();

您应该能够通过谷歌搜索找到更多关于在网络表单中使用 AD 的信息,如果您需要对这些信息做更多的事情而不是打印它:)

【讨论】:

    猜你喜欢
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2015-01-22
    • 1970-01-01
    • 2012-10-28
    相关资源
    最近更新 更多