2017-07-06 64 views
0

我有一个使用Windows身份验证的asp.net MVC网站(4.5.1)。我允许某个AD安全组的用户访问。 AD Sec组也具有对我的SQL数据库的读取权限。我的问题是,当该组中的用户尝试访问我的网站的根网址时,他们会收到401访问被拒绝错误。但是,当他们直接访问页面(与根页面加载的页面相同)时,他们可以访问它们,没有问题。为什么用户不能通过根链接访问我的网站?

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安全组读取权限。现在它可以工作。我是否必须明确地向用户提供这些权限?我不应该只需添加应用程序池用户,并且Web应用程序负责处理权限?

+0

这里一定有别的东西。你可能在根目录下有'default.aspx'或'index.aspx'文件吗? – DavidG

+0

不,这些文件都不是 –

+0

看起来“家”是你的控制器,但什么是orgbrowser? – Krishna

回答

0

解决的办法是明确地给我的网页在Windows服务器上的文件夹的AD安全组读取权限。我对此并不满意,因为我认为应该通过向应用程序池用户提供这些权限来解决这个问题,但这并不奏效,也没有涉及提供IUSR权限的任何事情。

相关问题