2012-04-05 2 views
1

LDAP로 인증하도록 asp.net (C#)을 설정했습니다. 모든 것이 잘 작동하고, 우리 디렉토리의 모든 사용자와 로그인 할 수 있습니다. 문제는 특정 페이지를 특정 그룹의 사람들에게만 제한해야한다는 것입니다. 로그인보기 + 계정 폴더 접근 방식을 사용하고 있습니다.memberOf를 사용한 LDAP 인증

내 웹 사이트 디자인은 간단하며 세 페이지로 구성되어 있으며 계정 폴더 외부의 모든 사용자가 볼 수 있으며 다른 두 페이지는 인증이 필요합니다. 한 그룹이 두 웹 페이지에 모두 액세스하고 두 번째 그룹에 한 페이지 만 액세스 할 수있게하고 싶습니다.

이 나는 ​​시도했다 :

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

하지만 내 사용자가 해당 그룹에없는 상관없이. LDAP 브라우저가 켜져 있는데 그룹에 속해 있는지 확인합니다. LDAP 브라우저는 "memberOf"및 "CN = group"을 표시합니다.

내가 잘못하고있는 것이 있습니까?

답변

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); 

이 위의 코드가 작동 할 수 있도록해야한다.

0

도메인에 대해 통합 인증을 사용하고 가장을 true로 설정 한 경우 ASPNET (및 다른 모든 글로벌 그룹)을 디렉터리에 대한 사용 권한을 제거하고 응용 프로그램 영역을 잠글 수 있습니다 지정된 광고 그룹에서 액세스 권한을 얻으려고합니다.

이 방법을 사용하는 시스템을 상속하고 몇 시간 동안 액세스 제어가 적용되는 곳을 알아내어 나를 트립시킵니다.