通过 Kestrel 启动 ASP.NET Core 时,User.Identity.Name 返回的名称服务器,而不是连接的用户

When launching ASP.NET Core via Kestrel, User.Identity.Name returned name server, not connected user

提问人:Gabby 提问时间:10/25/2023 最后编辑:marc_sGabby 更新时间:10/25/2023 访问量:23

问:

连接到 Kestrel 时,我需要获取的不是运行应用程序的服务器的名称,而是连接到应用程序的用户的名称。

我做错了什么?

我使用 Kestrel,而不是 IIS;在 Windows 服务器上运行。.exe

当尝试通过 识别用户时,我得到的是服务器名称,而不是访问服务器的用户的名称(返回相同的结果)System.Security.Principal.WindowsIdentity.GetCurrent().NameHttpContext.Current.User.Identity.Name

我使用cookie身份验证,但只是为了获取连接用户的名称,因为使用了Windows用户的域名,这已经排除了未经授权的访问

身份验证在具有 Windows 身份验证的 IIS 上有效(我获取用户名),但身份验证在具有 Cookie 的 Kestrel 上不起作用

工作原理:

  1. 我得到用户名
  2. 我从数据库到各种服务获取用户角色
  3. 我把用户名和它的角色写在ClaimsIdentity
  4. 我使用角色来访问各种控制器
ASP.NET-MVC WINDOWS 身份验证 kestrel

评论


答: 暂无答案