从 AD 获取当前登录的用户(而不是 NT AUTHORITY/NETWORK SERVICE)

Posted

技术标签:

【中文标题】从 AD 获取当前登录的用户(而不是 NT AUTHORITY/NETWORK SERVICE)【英文标题】:Getting currently logged in user from AD ( Instead of NT AUTHORITY/NETWORK SERVICE ) 【发布时间】:2015-01-15 17:17:28 【问题描述】:

我有一个 c# asp.net Web 应用程序,我需要在其中获取当前登录的用户(Windows 身份验证 - 活动目录)

我将 ISS(7.5) 中的身份验证更改为 windows 身份验证,并在 web.config 中阻止了匿名访问

但是,当我使用“System.Security.Principal.WindowsIdentity.GetCurrent()”时,我没有获得自己的用户凭据,而是获得 NT AUTHORITY/NETWORK SERVICE。

我尝试让 iis 将我的帐户用于应用程序池(仅用于测试),但这只会让一切变得混乱。

知道我可以做些什么来获得自己的用户凭据吗?

【问题讨论】:

使用HttpContext.Current.User.Identity 这个问题解决了吗?如何解决的? 【参考方案1】:

System.Security.Principal.WindowsIdentity.GetCurrent() 返回运行 Web 应用程序的帐户的身份。

HttpContext.Current.User.Identity 返回登录用户的身份。通常when you're in a page or controller,你可以做User.Identity。如有疑问,请阅读文档!

【讨论】:

在这种情况下,它是一个 Sitecore 网站,而 HttpContext.Current.User.Identity 给了我 Sitecore.Security.Principal.SitecoreIdentity 而不是 / 在 sitecoreIdentity 里面是一个用户但这是 sitecore extranet/anonymous 中当前登录的用户 @Timon .Name 属性包含用户名。根据this blog post,这是意料之中的。当用户未登录时,他们将拥有帐户extranet/anonymous。但是一旦他们登录,听起来您就会看到他们的实际域和用户名。

以上是关于从 AD 获取当前登录的用户(而不是 NT AUTHORITY/NETWORK SERVICE)的主要内容,如果未能解决你的问题,请参考以下文章

无法在 UWP 应用中获取某些用户帐户信息 - 内部活动目录(不是 Azure AD)

如何获取当前Windows登录用户全名而不是域名[重复]

如何从spring security获取当前登录的用户对象?

如何从应用程序而不是 Azure AD 中注销?

如何在 Windows 窗体应用程序中获取 *** 用户的当前用户身份?

asp.net Web 应用程序返回 IIS 信息而不是当前用户凭据