2009-07-06 47 views
6

Tôi đang cố gắng bảo vệ tài nguyên trong tomcat để chỉ "người dùng hợp lệ" (những người có đăng nhập và mật khẩu hợp lệ trong vương quốc) mới có thể truy cập. Họ không nhất thiết phải thuộc về một nhóm trong vương quốc. Tôi đã thử với nhiều kết hợp của chỉ thị <security-constraint> mà không thành công. Bất kỳ ý tưởng?Ràng buộc bảo mật Tomcat cho người dùng hợp lệ

Trả lời

1

Có một số triển khai lĩnh vực trong tomcat - bộ nhớ, cơ sở dữ liệu, JAAS và hơn thế nữa. Cách đơn giản nhất để cấu hình (mặc dù không phải là an toàn nhất) bộ nhớ một, trong đó có chứa một tập tin XML duy nhất, thường dưới 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> 

Cấu hình vương quốc là trong bối cảnh, máy chủ hoặc cấu hình động cơ, như thế này:

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

sau đó, trong web.xml bạn đặt các định nghĩa sau đây:

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

phần web.xml được lấy (với thay đổi nhỏ) từ một trong web của chúng tôi ap ps.

+0

Trong môi trường cụ thể của tôi Tôi kết nối với một ldap bằng cách sử dụng JNDIRealm. Vấn đề là tôi không thể bao gồm các nhóm trong ldap và phải xác thực dựa trên tên người dùng và mật khẩu mà không có bất kỳ vai trò nào. Tôi đã thử sử dụng '' và ' *' mà không thành công. – rmarimon

12

Bên cạnh auth-khăn bạn đang thêm đến an ninh-chế:

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

bạn cần xác định vai trò an ninh trong ứng dụng web:

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

Tôi sẽ thử điều này và báo cáo lại. – rmarimon

+0

Thêm thẻ vai trò bảo mật là giải pháp cho chúng tôi. Cảm ơn. –

+0

Bất kỳ cách nào để thực sự thêm ràng buộc bên ngoài của web.xml? Ví dụ. thêm một ràng buộc cho tất cả các ứng dụng web ngoài Realm/Valve trong context.xml? – cschooley

Các vấn đề liên quan