Bảo mật trong JSP
JavaServer Pages và Servlet cung cấp một số kỹ thuật có sẵn tới lập trình viên để bảo mật các ứng dụng. Nguồn được bảo vệ bởi việc nhận diện chúng trong Application Deployment Descriptor và gán một role cho chúng.
Một số mức độ xác nhận (Authentication) là có sẵn, từ Basic Authentication (xác nhận cơ bản) bởi sử dụng Identifier và Password cho tới Sophisticated Authentication (xác nhận tinh vi hơn) bởi sử dụng Certificate.
Role dựa trên Authentication
Kỹ thuật Authentication trong Servlet Specification sử dụng một kỹ thuật gọi là Role-Based Security. Ý tường này thay cho việc hạn chế các nguồn (restricting resources) tại level người sử dụng, bạn tạo các role và hạn chế nguồn bởi role đó.
Bạn có thể định nghĩa các role khác nhau trong tomcat-users.xml file, mà được đặt tại cuối của Home directory trong Tomcat trong conf. Một ví dụ của file này là:
File này định nghĩa một ánh xạ đơn giản giữa user name, password và role. Chú ý rằng, một người sử dụng đã cho có nhiều role, ví dụ, user name="both" là trong "tomcat" role và "role1" role.
Khi bạn đã nhận diện và định nghĩa các role khác nhau, một sự hạn chế Role-Based Security có thể được đặt trên các nguồn Web application khác nhau bởi sử dụng phần tử
Ví dụ sau là một entry mẫu trong web.xml:
... SecuredBookSite /secured/* GET POST Let only managers use this app manager manager ... BASIC
Các entry trên nghĩa là:
Bất kỳ HTTP GET hoặc POST yêu cầu tới một URL đã kết nối bởi /secured/* sẽ là chủ đề tới Security Restriction.
Một người với manager role được cung cấp sự truy cập tới các nguồn được bảo mật.
Cuối cùng, phần tử login-config được sử dụng để miêu tả Basic Authentication.
Bây giờ, nếu bạn thử trình duyệt tới bất kỳ URL nào bao gồm thư mục /security, nó sẽ hiển thị một hộp thoại yêu cầu user name và password. Nếu bạn cung cấp một user là "admin" và password là "secrer", thì chỉ bạn sẽ có quyền truy cập trên URL đã được kết nối bởi /secured/*, bởi vì ở trên chúng ta đã định nghĩa user admin với manager role, người mà được phép truy cập nguồn này.
Form dựa trên Authentication
Khi bạn sử dụng phương thức FORM authentication, bạn phải cung cấp một login form để nhắc người dùng về một username và một password. Sau đây là code đơn giản login.jsp để tạo mọt form cho mục đích trên:
Tại đây bạn phải đảm bảo rằng, login form phải chứa các phần tử form với tên j_username và j_password. Action trong thẻ