首页 文章

使用memberOf进行LDAP身份验证

提问于
浏览
1

我有一个asp.net(C#)设置为使用LDAP进行身份验证 . 一切正常,我可以登录我们目录中的任何用户 . 问题是,我需要将某些页面限制在特定组中的人员 . 我正在使用登录视图的帐户文件夹方法 .

我的网站设计很简单,它有三个页面,一个可供所有人查看(帐户文件夹之外),另外两个需要身份验证 . 我希望一个组可以访问这两个网页,而第二个组只能访问其中一个页面 .

我试过了:

String group = "group";
if (!User.IsInRole(group)) {
    Response.Redirect("login.aspx");
}

但无论我的用户不在该组中 . 我有一个LDAP浏览器,我知道我确实在群组中 . LDAP浏览器显示“memberOf”和“CN = group” .

有什么我做错了吗?

3 回答

  • 0

    为用户创建 FormsAuthenticationTicket 时, UserData 指定该用户的"Role(s)" .

    http://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx

    仅举例如:

    FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1,
        username, DateTime.Now, DateTime.Now.AddMinutes(30),
        isPersist, "group");
    
    //I'll add more example code for the sake of completing the example
    string encryptTick = FormsAuthentication.Encrypt(authTicket);
    HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,
                    encryptTick);
    if (isPersist)
        cookie.Expires = authTicket.Expiration;
    Response.Cookies.Add(cookie);
    

    这应该允许上面的代码工作 .

  • 0

    您是否尝试过添加域名?

    您也可以使用App.Config实现此功能:http://bytes.com/topic/asp-net/answers/300187-web-config-authorization-help

    编辑:

    Here是使用App.Config在ASP.NET中基于角色的安全性的更好链接 .

  • 0

    如果对域使用集成身份验证,并且已将模拟设置为true,则可以通过删除ASPNET(以及任何其他全局组)对目录具有权限来锁定应用程序的区域,并添加到指定的AD中您想要访问的群组 .

    我肯定会记录这一点,因为我继承了一个使用这种方法的系统,它让我绊倒几个小时来确定实施访问控制的位置 .

相关问题