iis c# .net Web Api Windows和匿名身份验证获取当前用户

anhgbhbe  于 2022-11-12  发布在  C#
关注(0)|答案(2)|浏览(301)

我正在尝试获取本地用户,但没有返回。

  • 网络应用程序接口
  • 互联网信息服务(10)视窗10

我的IIS已启用:

  • 视窗
  • 基本型
  • 匿名

Visual Studio 2017 C# .net语言开发工具包
我已经尝试标记Web配置:

<authorization>
  <allow users="?" />
</authorization>
AND
<identity impersonate="false" />
<authentication mode="Windows" />

WebApi代码

[HttpGet]
    [Authorize]//I already tried [AllowAnonymous]
    public User Get()
    {
        System.Net.NetworkCredential SystemCredential = (System.Net.NetworkCredential)ADUtil.SystemCredential();
        string login = HttpContextUtil.Request.LogonUserIdentity.Name;
error here, login return 'NT AUTHORITY\IUSR'.
}
ctehm74n

ctehm74n1#

你不可能在一个应用程序中混合不同的身份验证模式而不陷入混乱。你必须选择一种并坚持使用它。
AllowAnonymous属性允许您访问特定的控制器而无需验证。它们是否经过验证取决于您的验证方法。它通常用于访问登录页面,但也可以用于您不需要限制访问的站点区域。
最简单的方法可能是禁用IIS中除“Windows”之外的所有内容

3phpmpom

3phpmpom2#

正如前面提到的here,如果你想允许用户匿名请求和其他用户使用windows身份验证,你最好的方法是为每个AuthenticationScheme提供两个不同的子路径,例如为匿名请求/anonymous/{controller}/{action}定义一个路由,为windows身份验证请求/windows/{controller}/{action}定义一个路由。因此,你不必双重实现控制器,但缺点是您必须为同一个模块运行两个连接。

相关问题