Asp.net 核心 Web API - 当前用户和 Windows 身份验证

Asp.net Core Web API - Current user & Windows Authentication

我们的应用程序中有以下技术堆栈 AngularJS2 Asp.Net核心API SQL 服务器

现在我们需要在 Create/Edit 期间为给定项目在 table 中存储登录用户的用户名,即在核心 API.

我们已经尝试过

我在使用 Visual Studio 时使用 Windows 身份获得用户名,但是对于 IIS,它给出的值是 Asp.Net 核心,即池名称

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

使用 IIS 版本 6.1

我错过了什么吗?

您是否在 web.config 中将 forwardWindowsAuthToken 设置为 true?

<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true"/>

我环顾四周,建议使用 Windows 身份验证创建 Asp.Net 核心 WebApi 应用程序。

因此,当我使用 Windows 身份验证创建 Asp.Net 核心 WebApi 时,它起作用了,我在 User.Identity 个对象中获得了值。

所以我创建了 2 个应用程序,一个有 Windows 身份验证,一个没有,然后比较所有文件并发现以下文件有变化

  • forwardWindowsAuthToken - 是的,之前尝试过但问题没有解决,Daboul
  • 也提出了同样的建议
  • launchSettings.json, 设置 windowsAuthentication: true & anonymousAuthentication: false

完成此操作后,我能够在 User.Identity 对象中设置值。


launchSettings.json 文件:

{
  "iisSettings": {
    "windowsAuthentication": true,
    "anonymousAuthentication": false
    }
}

Web.Config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore forwardWindowsAuthToken="true" processPath="C:\Program Files\dotnet\dotnet.exe" arguments=".\YourWebsite.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
        <security>
            <authentication>
                <windowsAuthentication enabled="true" />
                <anonymousAuthentication enabled="false" />
            </authentication>
        </security>
  </system.webServer>
</configuration>

在 Windows Server 2012 R2/IIS 8.0 上,即使在 web.config 中设置 forwardWindowsAuthToken=true 之后,User.Identity.Name 也没有返回用户名但是 IIS APPPOOL 以便解决我在下面所做的更改的问题;

  1. 转到 IIS 中的 Web 应用程序
  2. 打开配置编辑器
  3. 将部分更改为系统。webServer/serverRuntime
  4. 将 authenticatedUserOverride 更改为 UseAuthenticatedUser(对我来说它设置为 UseWorkerProcessUser)

详情请见下文link; https://blogs.iis.net/jaroslad/what-does-the-authenticateduseroverrideuser-do