我在Visual Studio 2015中使用ASP.NET MVC 5进行Windows身份验证。目前,用户通过在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]
表中获取用户的角色以及在用户持续时间我在哪里存储#&# 39;会议?
这是另一个与角色合作的example,但不确定它们在哪里获得。这个article中有很多好的信息,但没有关于将它绑定到Windows身份验证的信息。
感谢您的帮助。
更新:过滤器将替换为AspNetUserRoles;这个目前只是一个绷带让人们离开,直到我们弄清楚这件事。
答案 0 :(得分:1)
Windows身份验证是另一回事,您无法将它们绑定在一起。
使用Windows,网络管理员创建窗口组,并将用户放入其中。
它们与您的数据库无关,可以在其他应用中使用。
答案 1 :(得分:1)
您需要为此编写自定义身份验证提供程序。
一种方法可能是做这样的事情:
https://www.codeproject.com/Articles/5353/Custom-Authentication-provider-by-implementing-IHt
或者您可以在框架中使用现有的WindowsAuthenticationProvider类并将其继承到&#34;覆盖&#34;基于角色的方法。
如果您希望通过更多选项进行更深入的潜水,这可能会很有用......
但是正常的文档,你可能想从这里开始......