2013-03-05 19 views
6

Tôi chạy ứng dụng web JavaEE 6 trên Glassfish 3. Tôi sử dụng JAAS với jdbcRealm và hiệu trưởng mặc định để ánh xạ vai trò. Trong cơ sở dữ liệu của tôi, tôi có bảng cho tên người dùng ánh xạ tới vai trò của mình:Tại sao tôi liệt kê các vai trò bảo mật trong web.xml khi chúng nằm trong cơ sở dữ liệu jdbcRealm?

username | role 
----------+------- 
john  | admin 
mary  | user 

Tại sao tôi cần phải liệt kê những vai trò này một lần nữa trong web.xml của tôi?

<security-role> 
    <role-name>admin</role-name> 
</security-role> 
<security-role> 
    <role-name>user</role-name> 
</security-role> 

Nếu không có isUserInRole() luôn trả về false.

+0

trông gần với http://stackoverflow.com/questions/5294252/confusing-about-security-role-in-web-xml –

+0

Nó không thực sự mặc dù chúng là về cõi an ninh. –

Trả lời

7

Bạn không xác định lại vai trò bảo mật trong web.xml. Bạn liệt kê chúng để máy chủ ứng dụng biết về việc sử dụng chúng trong mã của bạn.

Khi bạn triển khai ứng dụng bảo mật, máy chủ ứng dụng sẽ đọc bộ mô tả triển khai để thu hút thông tin về cấu hình bảo mật. Nó biết về các vai trò được sử dụng trong ứng dụng của bạn. Sau đó, ứng dụng có thể sử dụng các vai trò và mong đợi máy chủ ứng dụng có thể ánh xạ chúng tới người dùng và nhóm (điều đó cuối cùng sẽ giải quyết cho người dùng một lần nữa khi người dùng là các khối xây dựng an toàn nhất).

Phát biểu về vai trò bản đồ cho người dùng, đó là nơi có một lĩnh vực. Nó cung cấp ánh xạ để bạn biết rằng vai trò X trong bộ mô tả triển khai ánh xạ tới vai trò X trong cơ sở dữ liệu.

Với điều đó đã nói, cơ sở dữ liệu được sử dụng bởi jdbcRealm có vai trò giống nhau bởi vì chúng là khóa cho người dùng mà máy chủ ứng dụng cần ánh xạ tới các vai trò trong ứng dụng.

Những gì bạn sử dụng trong mã của mình và bộ mô tả triển khai là tên hợp lý của một nhóm người dùng được giải quyết cho người dùng thực thông qua ánh xạ được cung cấp bởi jdbcRealm.

+0

Trong ứng dụng ish "hello-world" đơn giản của tôi; Tôi chưa chỉ định thẻ . Vẫn còn mọi thứ hoạt động như mong đợi. tức là trình duyệt yêu cầu xác thực. Và người dùng đã nhập và vai trò của nó được xác định chính xác bởi tomcat. Vì vậy, nó chỉ là tính năng tốt đẹp để có? –