我有一个使用Windows身份验证的asp.net MVC网站(4.5.1)。我允许访问某个AD安全组的用户。 AD Sec组也对我的SQL DB具有读访问权限。我的问题是,当该组中的用户尝试访问我的站点的根URL时,他们会收到401 Access Denied错误。但是,当他们直接访问页面(与根页面加载的页面相同)时,他们可以访问它们,没问题。
website.com/orgbrowser - > 401错误
website.com/orgbrowser/home - >没有错误
website.com/orgbrowser/home/search - >没有错误
我的routeconfig默认加载/ home / search。我的管理员用户没有出现错误,当我访问website.com/orgbrowser时,我正确显示/ home / search。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Search", id = UrlParameter.Optional }
);
}
我在web.config中的安全设置:
<system.web>
<compilation targetFramework="4.5.1" />
<customErrors mode="Off" />
<httpRuntime targetFramework="4.5.1" />
<authentication mode="Windows" />
<authorization>
<allow roles="ADSec Group Name"/>
<deny users="*" />
</authorization>
</system.web>
我的路由配置(或我的asp.net代码中的其他任何地方)我做错了什么,或者这可能是IIS或SQL安全设置的问题?
编辑:我已经为我的服务器上包含该网页的文件夹提供了AD安全组读取权限。现在它有效。我是否应该明确地向用户授予这些权限?我不应该只是添加App Pool用户,而web-app会处理权限吗?
答案 0 :(得分:0)
解决方案是明确授予AD安全组对Windows服务器上我的网页文件夹的读取权限。我对此并不满意,因为我认为这应该通过向应用程序池用户提供这些权限来解决,但这不起作用,也没有涉及授予IUSR权限的任何内容。