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

问题描述 投票:0回答:1

我正在尝试将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,基于用户名的销售部门)如何实现。任何建议都会有所帮助。

c# asp.net-core asp.net-core-2.2
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.