c# - ASP.NET MVC 上的 Active Directory 身份验证

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

我的数据库中有几个表指定女巫用户(取决于您的 AD 用户名)实际上可以使用我正在构建的当前 ASP.NET MVC 2 应用程序。

我的问题是如何(或者更可能是我应该把它放在哪里?在母版页上??)我要写一个方法让 AD 用户脱离 HTTP 上下文并根据数据库验证它是否您实际上可以使用该应用程序吗?如果可以的话……我的想法是用我需要的信息(角色、全名等)在 Session 对象中写几个键。

我很困惑我应该如何完成这个以及它是否真的是正确的方法...请记住,我的应用程序中有一个管理部分和一个非管理部分。

有什么想法吗?

编辑:请记住,我不关心通过表单对用户进行身份验证。我只想检查根据我的数据库和您的 AD 用户名是否可以使用我的应用程序。如果你能写信给session为了消亡我需要的信息。否则只是抛出一个错误页面。

这是我目前已经实现的,这是要走的路吗? 第二种方法有什么用? (对不起,我是 c# 的新手)我想做的实际上是在您未被授权时抛出一个 View ...

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
  var isAuthorized = base.AuthorizeCore(httpContext);
  if (isAuthorized)
  {
    var canUse = this._userRepo.CanUserUseApp(httpContext.User.Identity.Name);
    if (!canUse)
    {
      isAuthorized = false;
    }
  }
  return isAuthorized;
} 

最佳答案

你可以 activate and use Windows (NTLM) authentication然后编写一个自定义 [Authorize] 属性,您可以在其中获取当前连接的 AD 用户,并执行额外检查以检查他是否有权对您的数据存储使用该应用程序。然后,您将使用此自定义属性装饰需要授权的 Controller /操作。


更新:

以下是此类自定义属性的示例:

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var isAuthorized = base.AuthorizeCore(httpContext);
        if (isAuthorized)
        {
            // The user is authorized so far => check his credentials against
            // the custom data store 
            return IsUserAllowedAccess(httpContext.User.Identity.Name);
        }
        return isAuthorized;
    }

    private bool IsUserAllowedAccess(string username)
    {
        throw new NotImplementedException();
    }
}

然后:

[MyAuthorize]
public class FooController: Controller
{
    public ActionResult Index()
    {
        ...
    }
}

关于c# - ASP.NET MVC 上的 Active Directory 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5606173/

相关文章:

asp.net-mvc-2 - 将 HttpFileCollectionBase 传递到业务层 - 不好?

c# - 在 C# 中根据鼠标点击获取事件窗口名称

c# - 文件无法保存在使用 C# ASP.NET 的文件夹内

c# - Entity Framework .Remove() 与 .DeleteObject()

asp.net-mvc-2 - 为什么 mvc Html.HiddenFor 不呈现我的字段?

asp.net - 区域的 RedirectToAction?

java - GAE 用户 + OpenId + Oauth2 Java

tomcat - 使用基本的 tomcat 身份验证

c# - MVVM (Cross) 的逻辑问题。在我倒计时后拍照

c# - 在网络共享驱动器上复制文件