使用 ASP.Net 身份时如何获取 AD 用户

How do I get AD user when using ASP.Net Identity

我正在尝试在我的 mvc 5 asp.net vb.net 内部网站中获取当前 windows (AD) 用户的详细信息。

当我开始这个项目时,我将身份验证设置为个人帐户,假设我仍然可以获得 windows 用户信息。但我没有运气。当我在调试中使用 visual studio 时,我可以获得此信息。但是这个信息在IIS.

中被apppool的身份名代替了

我的 Intranet 站点当前设置为使用以下配置。

<authentication mode="Windows" />
    <authorization>
        <allow users="*"/>      
        <!--<deny users="?"/>-->
</authorization>

我的应用程序设置为使用匿名和 windows 身份验证。如果我关闭匿名,我开始收到 query string too long。当尝试创建 return url 时,它开始进入无限循环。真烦人。

总之。对我来说,这个概念是:如果用户是 windows AD 用户,他们可以进入我的登录页面,如果凭据正确,他们可以使用该网站,否则将被踢出。所以有点像双因素身份验证。

我已经决定允许匿名以获取广告信息,然后基于此我可以拒绝或允许访问。我打算将此信息放在 signinstatus.success = true.

的登录控制器中

我已经在互联网上搜索,试图找到一个足够体面的解决方案来尝试让这个混合动力车工作,但我正在努力寻找清晰度。在某些情况下,人们只想插入自己的工具。

AllowAnonymous 是必要的,当你有授权的前身时,即用户必须提交的登录页面。如果您不允许匿名用户访问此页面,那么他们将无法实际登录以获得查看该页面的授权(因此您的无限重定向)。

ASP.NET Identity 和 Windows Auth 是不同且不兼容的授权方案。您不能在同一应用程序中同时使用两者。但是,您 可以 使用 ASP.NET 身份并添加一个自定义 authentication/authorization 层,该层利用 LDAP 连接来检查 AD 的凭据。换句话说,如果你想使用AD,你必须添加一个手动集成。