2012-04-05 12 views
1

Ich habe eine asp.net (C#) eingerichtet, um mit LDAP zu authentifizieren. Alles funktioniert gut, ich kann mich mit jedem Benutzer in unserem Verzeichnis einloggen. Die Sache ist, ich muss bestimmte Seiten auf Personen in bestimmten Gruppen beschränken. Ich benutze die Login-Ansicht + den Account-Ordner-Ansatz.LDAP Authentifizierung mit memberOf

Mein Website-Design ist einfach, es hat drei Seiten, eine ist für jeden sichtbar (außerhalb des Kontoordners), die beiden anderen erfordern Authentifizierung. Ich möchte, dass eine Gruppe Zugriff auf beide Webseiten hat und eine zweite Gruppe Zugriff auf nur EINE Seite hat.

Ich habe versucht:

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

Aber egal, was meine Benutzer nicht in dieser Gruppe ist. Ich habe einen LDAP-Browser und weiß, dass ich in der Gruppe bin. Der LDAP-Browser zeigt "memberOf" und "CN = group" an.

Gibt es etwas, was ich falsch mache?

Antwort

0

Wenn Sie Ihren FormsAuthenticationTicket für den Benutzer erstellen, gibt UserData die "Rolle (n)" für diesen Benutzer an.

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

Nur zum Beispiel:

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

Dies sollte Ihr Code oben arbeiten können.

0

Wenn Sie die integrierte Authentifizierung für Ihre Domäne verwenden und den Identitätswechsel auf "true" festgelegt haben, können Sie Bereiche Ihrer Anwendung sperren, indem Sie ASPNET (und andere globale Gruppen) entfernen und keine Berechtigungen für das Verzeichnis eingeben In den angegebenen AD-Gruppen möchten Sie Zugriff haben.

Ich würde dies definitiv dokumentieren, da ich ein System geerbt habe, das diese Methode verwendet, und es hat mich für ein paar Stunden gestolpert herauszufinden, wo die Zugriffskontrolle durchgesetzt wurde.