2009-07-06 33 views
6

Próbuję chronić zasób w tomcat, aby tylko "uprawnieni użytkownicy" (posiadający ważny login i hasło w dziedzinie) mogli uzyskać do niego dostęp. Oni niekoniecznie należą do grupy w królestwie. Próbowałem z wieloma kombinacjami dyrektywy <security-constraint> bez powodzenia. Jakieś pomysły?Ograniczenie bezpieczeństwa Tomcat dla ważnego użytkownika

Odpowiedz

1

Istnieje kilka implementacji dziedzin w tomcat - pamięć, baza danych, JAAS i więcej. Najprostszym jeden skonfigurować (choć nie jest to najbardziej bezpieczne) pamięć jeden, który zawiera pojedynczy plik XML, zwykle pod conf/tomcat-users.xml:

<tomcat-users> 
    <user name="tomcat" password="tomcat" roles="tomcat" /> 
    <user name="role1" password="tomcat" roles="role1" /> 
    <user name="both" password="tomcat" roles="tomcat,role1" /> 
</tomcat-users> 

Konfiguracja sfera jest pod kontekstowego hosta lub konfiguracje silnika, na przykład:

<Realm className="org.apache.catalina.realm.MemoryRealm" 
     pathname="conf/tomcat-users.xml" /> 

Następnie w web.xml można umieścić następującą definicję:

<security-constraint> 
      <web-resource-collection> 
        <web-resource-name>MRC Customer Care</web-resource-name> 
        <url-pattern>/protected/*</url-pattern> 
      </web-resource-collection> 
      <auth-constraint> 
        <role-name>role1</role-name> 
      </auth-constraint> 
    </security-constraint> 

    <!-- Define the Login Configuration for this Application --> 
    <login-config> 
      <auth-method>DIGEST</auth-method> 
      <realm-name>YOUR REALM NAME</realm-name> 
    </login-config> 

    <security-role> 
      <description> 
       The role that is required to access the application. 
       Should be on from the realm (the tomcat-users.xml file). 
      </description> 
      <role-name>role1</role-name>     
    </security-role> 

część web.xml jest pobierane (z niewielkimi zmianami) z jednym z naszych sieci ap ps.

+0

W moim konkretnym środowisku jestem łączenie z ldap za pomocą JNDIRealm. Problem polega na tym, że nie mogę uwzględniać grup w ldap i muszę uwierzytelniać tylko na podstawie nazwy użytkownika i hasła bez żadnej roli. Próbowałem używać '' i ' *' bez powodzenia. – rmarimon

12

Poza auth-przymusu dodawanego do bezpieczeństwem przymusu:

<auth-constraint> 
     <role-name>*</role-name> 
    </auth-constraint> 

trzeba określić rolę bezpieczeństwa w sieci web-app:

<security-role> 
     <role-name>*</role-name> 
    </security-role> 
+0

Mam zamiar spróbować i złożyć raport. – rmarimon

+0

Dodanie tagu security-role było dla nas rozwiązaniem. Dzięki. –

+0

W jaki sposób faktycznie dodać ograniczenie poza web.xml? Na przykład. dodać ograniczenie dla wszystkich aplikacji internetowych oprócz Realm/Valve w pliku context.xml? – cschooley

Powiązane problemy