我有一个asp.net(C#)设置为使用LDAP进行身份验证。一切正常,我可以登录我们目录中的任何用户。问题是,我需要将某些页面限制为特定组中的人员。我正在使用登录视图+帐户文件夹方法。
我的网站设计很简单,它有三个页面,一个可供所有人查看(帐户文件夹之外),另外两个需要身份验证。我希望一个组可以访问这两个网页,而第二个组只能访问其中一个页面。
我试过了:
String group = "group";
if (!User.IsInRole(group)) {
Response.Redirect("login.aspx");
}
但无论我的用户不在该组中。我有一个LDAP浏览器,我知道我确实在群组中。 LDAP浏览器显示“memberOf”和“CN = group”。
我有什么问题吗?
答案 0 :(得分:0)
您是否尝试过添加域名?
您也可以使用App.Config实现此功能:http://bytes.com/topic/asp-net/answers/300187-web-config-authorization-help
编辑:
Here是使用App.Config在ASP.NET中基于角色的安全性的更好链接。
答案 1 :(得分:0)
为用户创建FormsAuthenticationTicket
时,UserData
指定该用户的“角色”。
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);
这应该允许上面的代码工作。
答案 2 :(得分:0)
如果您对域使用集成身份验证,并且已将模拟设置为true,则可以通过删除ASPNET(以及任何其他全局组)来获取对目录的权限来锁定应用程序的区域,并添加您希望有权访问的指定AD组。
我肯定会记录这一点,因为我继承了一个使用这种方法的系统,它让我绊倒了几个小时来确定执行访问控制的位置。