gpt4 book ai didi

c# - [Authorize(Roles = "Administrators")] 使用 Windows 身份验证被拒绝访问

转载 作者:行者123 更新时间:2023-11-30 16:58:19 25 4
gpt4 key购买 nike

我有一个使用 Windows 身份验证来限制用户访问的 ASP.NET MVC 4 站点。在 Controller 上应用[Authorize(Roles = "Administrators")]

该网站正在我的本地计算机上通过 IIS 运行。当访问站点时(也是从我的本地计算机)访问被拒绝,即使我的用户帐户是管理员组的成员。

我试过按照这篇文章中的建议指定“BUILTIN\Administrators”:How do I make AuthorizeAttribute work with local Administrators group in ASP.NET MVC 3 intranet application? 但没有成功。

如果我创建一个像“TestGroup”这样的新组,请将我的用户帐户分配给该组并在我的 Controller 上使用[Authorize(Roles = "TestGroup")] - 然后我就可以访问 Controller 。

Administrator 组是否有一些特殊限制(可能是出于安全原因?),或者是否有其他任何可能影响 Administrator 组使用的因素?

最佳答案

通过在您当前的 ASP.NET 标识中列出声明:

(System.Web.HttpContext.Current.User.Identity
as System.Security.Principal.WindowsIdentity)
.Claims
.ToArray();

您将看到管理员组 (SID : S-1-5-32-544) 有一个类型为 denyonsid 的声明。对 User.IsInRole("Administrators") 的调用将失败。

我认为,重点是当前用户永远不会真正属于管理员组,除非您关闭 UAC 和/或以管理员身份运行浏览器

我已经完成了这两件事(浏览器是在本地主机上启用了 NTLM 的 Firefox)和 ta-dah,一切都按预期工作:

System.Web.HttpContext.User.IsInRole("Administrators")  
true
(System.Web.HttpContext.User.Identity
as System.Security.Principal.WindowsIdentity)
.Claims
.ToArray()
{System.Security.Claims.Claim[19]}
[0]: {http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name: Domain\Mauro}
[...]
[8]: {http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid: S-1-5-32-544}

作为尾注,您不应使用管理员组进行基于声明的身份验证。最好引入自定义域/本地组。

只是我的 2 美分。

关于c# - [Authorize(Roles = "Administrators")] 使用 Windows 身份验证被拒绝访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25399347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com