【问题标题】:What's the best way to implement Windows Authentication for an ASP.NET MVC intranet application?为 ASP.NET MVC Intranet 应用程序实现 Windows 身份验证的最佳方法是什么?
【发布时间】:2014-03-31 15:55:43
【问题描述】:

我创建了一个 ASP.NET MVC 4 应用程序,该应用程序以前使用 Windows 窗体对用户进行身份验证,但我将其移至内部服务器,并希望根据用户的 AD 登录并使用 Windows 身份验证对用户进行身份验证。

在我的数据库中,我有一个用户 AD 用户名(域\用户名)和一些基本权限的列表。如果用户尝试访问应用程序,并且他们在数据库中,我想授予访问权限并分配他们的权限。如果他们不在数据库中,我想授予访问权限,但只为他们分配基本权限(只读)。

实现身份验证的最佳方式是什么(无需重写应用程序以使用简单的成员资格)? (或者这真的是最好的方法吗!?)

感谢任何帮助 - 每篇文章都指向 web.config 中的简单身份验证或命名用户。

【问题讨论】:

  • 这里面基本上有两个部分。首先是身份验证,然后是授权。对于身份验证,您可能希望看到这个 link。然后是授权部分,它将使用授权属性来检查哪些用户可以访问您的应用程序中的哪些操作方法。

标签: c# asp.net asp.net-mvc authentication


【解决方案1】:

我建议编写一个自定义属性来处理这个问题:

MyAuthorizationAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        //Check database here
    }
}

然后让您的所有控制器都从具有授权属性的基本控制器继承:

 [MyAuthorization]
 public class BaseController : Controller
 {
 }

 public class HomeController : BaseController
 {
      //Do Stuff
 }

【讨论】:

    【解决方案2】:

    我会使用ActiveDirectoryMembershipProvider 提供身份验证,然后修改数据库以与SimpleRoleProvider 对齐以提供授权。

    【讨论】:

      【解决方案3】:

      我建议使用 LDAP,启动和运行非常简单,调用也非常简单。

      【讨论】:

        猜你喜欢
        • 2014-02-05
        • 1970-01-01
        • 2016-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-26
        • 1970-01-01
        相关资源
        最近更新 更多