繁体   English   中英

Windows 授权适用于 IIS Express 上的调试,但不适用于 IIS 服务器

[英]Windows Authorization works in debug on IIS Express but not in IIS server

我一直在与 ASP.Net Core 3.1 中的配置错误或错误作斗争。 我正在尝试接收 Windows 身份验证用户并检查该用户是否在 appsettings.json 中指定的 AD 组中。 在本地运行 IIS Express 的调试模式下,一切正常。 用户通过认证,AD组检查成功。

我将此项目发布到一个文件夹并将其复制到连接到域的内部 IIS 服务器。 我已经为 Windows 身份验证配置了 IIS 服务器(Windows Server 2016 / IIS 版本 10)并禁用了匿名身份验证。 当我尝试导航到应用程序时,我收到以下错误...

更新的错误信息

其中指的是以下代码:

public class ClaimsLoader{
public static string Role { get; set; }
public static bool IsInGroup(ClaimsPrincipal User, string GroupName)
{
    bool check = false;
    var user = (WindowsIdentity)User.Identity;
    if (user.Groups != null)
    {
        foreach (var group in user.Groups)
        {
            check = group.Translate(typeof(NTAccount)).ToString().Contains(GroupName);
            if (check)
                break;
        }
    }
    return check;
} }

引用它的控制器是:

if (ClaimsLoader.IsInGroup(User, _config.GetValue<string>("Admin"))){
            ClaimsLoader.Role = "Administrator"; 
        }
        else if (ClaimsLoader.IsInGroup(User, _config.GetValue<string>("Modify")))
        {
            ClaimsLoader.Role = "Modify";
        }
        else
        {
            ClaimsLoader.Role = "";
        }

根据我阅读的文章,这是执行此操作的方法。 大多数都在引用 .net core 2.0,所以版本之间有什么变化使这个过时了吗? 我觉得非常令人沮丧的是,这在具有 Windows 身份验证的 IIS Express 上有效,但在 IIS 上无效。

这是我在这里的第一篇文章,如果我错过了一些需要的信息,请告诉我。

编辑:这是 IIS 中的 Windows 身份验证设置。 IIS Windows 身份验证IIS Windows身份验证提供程序

我已经在我这边创建了一个测试演示,我现在可以重现您的问题。

我猜您可能同时启用了匿名身份验证和 Windows 身份验证。

我建议您可以尝试禁用匿名身份验证并启用 Windows 身份验证,然后再试一次。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM