为asp.net核心网站实施Windows身份验证

时间:2020-06-04 21:41:00

标签: c# asp.net-core asp.net-core-2.2

我正在尝试将Windows身份验证添加到新的asp.net core 2.2版本网站。创建网站`1)时,我已将身份验证模式更改为“ Windows身份验证”。在launchsettings.json中验证

"windowsAuthentication" = true, "AnonymousAuthentication": false,

2)将以下行添加到ConfigServices下的Startup.cs文件中。

services.AddAuthentication(IISDefaults.AuthenticationScheme);

3)我当前正在本地运行,因此在本地计算机中,启用->打开或关闭Windows功能-> Internet信息服务->安全性->“ Windows身份验证”

问题在本地系统上:1)不显示弹出窗口来输入用户名和密码 2)我需要显示Windows用户名和目录详细信息(部门,例如:IT,基于用户名的销售部门) 如何实现。 任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:1)

1)不显示弹出窗口来输入用户名和密码

如果使用IIS托管Web应用程序,则应使用IIS管理控制台启用Windows身份验证,或修改web.config文件。

据我所知launchsettings.json具有以下功能:

  • 仅在本地开发计算机上使用。
  • 未部署。
  • 包含配置文件设置。

这意味着Windows身份验证设置在部署后将不会在IIS中启用。您应该使用IIS管理控制台启用它。

打开身份验证:

enter image description here

禁用匿名身份验证并启用Windows身份验证

enter image description here

或者您可以在web.config中添加以下设置

<system.webServer>
    <security>
        <authentication>
            <anonymousAuthentication enabled="false" />
            <windowsAuthentication enabled="true" />
        </authentication>
    </security>
</system.webServer>

如果要使用kestrel而不是IIS来承载应用程序,则应在应用程序中使用HTTP.SYS。有关如何使用它的更多详细信息,您可以参考此article

2)我需要显示Windows用户名和目录详细信息(部门,例如:IT,基于用户名的销售部门)

如果要获取用户名,建议您尝试使用User.Identity.Name

如果您想获得当前用户的部门,建议您尝试使用此solution