ASP .NET Core IIS主机用户标识名为空,IsAuthenticated = false

use*_*726 6 c# iis web-hosting asp.net-core

我在IIS上运行ASP .NET Core dll(使用AspNetCoreModule)

使用以前的ASP .NET,我可以获得用户身份名称:

HttpContext.Current.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)

因为它是在IIS上下文中直接调用的.

使用ASP .NET Core,结果为null:

this.Request.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)

似乎IIS没有转发它,或者我的AspNetCore模块可能没有收到它.我如何收到用户身份名称?

use*_*726 2

我解决了这个问题。我是这样调试的:

由于我不确定用户凭据是否从 IIS 传递,因此我决定将请求 HTTP 标头从代码打印到日志文件。答案就在那里。我发现 IIS 可以使用基本身份验证。

AspNetCore 似乎不支持基本身份验证,因此我添加了一个中间件实现,用于解析“Authorization”标头中的信息并从中创建新的用户身份。

我自己实现了,但以下文章对我帮助很大:

https://blog.dangl.me/archive/http-basic-authentication-in-aspnet-core-projects/

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware

  • 如果提供一些额外的详细信息,而不仅仅是文章链接,这个答案会更有价值。 (3认同)