【问题标题】:MVC Windows authentication + roles management via the AspNetUserRoles table通过 AspNetUserRoles 表进行 MVC Windows 身份验证 + 角色管理
【发布时间】:2017-05-16 21:31:51
【问题描述】:

我在 Visual Studio 2015 中使用带有 Windows 身份验证的 ASP.NET MVC 5。目前,用户通过 Web.config 文件中的以下内容无缝连接到应用程序 - 没有登录屏幕:

<system.web>
    <authentication mode="Windows" />
    <authorization>
      <deny users="?" />
    </authorization>
</system.web>

那么Global.asax.cs有这个授权:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    GlobalConfiguration.Configure(WebApiConfig.Register);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);

    GlobalFilters.Filters.Add(new System.Web.Mvc.AuthorizeAttribute() 
        { Roles = "Some-AD-Group, Another-AD-Group" });
}

上述过滤器将允许进入应用程序的人员限制为 AD 组。我想使用 SQL Server 上的内置 [AspNet*] 表来管理授权并将用户与角色匹配。

这个example 让我可以创建一个自定义授权,但是我如何从[AspNetUserRoles] 表中获取用户的角色,以及在用户会话期间我将其存储在哪里?

这里是另一个example,它适用于角色,但不确定从哪里得到它们。 article 中也有很多很好的信息,但没有将其与 Windows 身份验证联系起来。

感谢您的帮助。

更新:过滤器将替换为 AspNetUserRoles;目前这只是一个绷带,可以让人们远离,直到我们弄清楚这件事情。

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-identity


    【解决方案1】:

    您需要为此编写一个自定义身份验证提供程序。

    一种方法可能是这样做:

    https://www.codeproject.com/Articles/5353/Custom-Authentication-provider-by-implementing-IHt

    或者您可以采用框架中现有的 WindowsAuthenticationProvider 类并继承它以“覆盖”基于角色的方法。

    如果您想通过更多选项进行更深入的研究,这可能会很有用...

    https://weblogs.asp.net/jongalloway/asp-net-mvc-authentication-customizing-authentication-and-authorization-the-right-way

    但是官方文档,你可能想从这里开始...

    https://msdn.microsoft.com/en-us/library/f1kyba5e.aspx

    【讨论】:

      【解决方案2】:

      Windows 身份验证是另一回事,您不能将它们捆绑在一起。

      使用 windows with,网络管理员可以创建 windows 组,并将用户放入其中。

      它们与您的数据库无关,可以在其他应用中使用。

      【讨论】:

      • 我正在使用 Windows 进行身份验证,但想使用数据库上的角色进行更细粒度的授权。
      • 为什么可以使用 Windows 身份验证但不能使用 Windows 组?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多