Trong hệ thống quản trị - báo cáo thanh toán hóa đơn, việc kiểm soát người dùng có quyền truy cập vào một thành phần EJB hay không được viết bằng mã lệnh đặt trong các file JSP.
Khi người dùng đăng nhập vào hệ thống, JSP sẽ lưu định danh của người dùng đó vào session. Các biến session sẽ xác định chương trình đang chạy bởi
người dùng nào. Sau đó, khi người dùng muốn thực hiện một chức năng nghiệp vụ được cung cấp bởi các thành phần EJB, mã lệnh trên JSP gọi phương thức kiểm tra quyền hạn của người dùng trong bean RightManager. Nếu người dùng có quyền thực hiện chức năng nghiệp vụ, JSP sẽ triệu gọi phương thức thực hiện chức năng nghiệp vụ người dùng yêu cầu.
Hình 3.11 biểu diễn biểu đồ tuần tự cho chức năng tạo người dùng. Khi người dùng có yêu cầu tạo người dùng, JSP sẽ gọi đến phương thức
checkRight() trong bean RightManager. Nếu người dùng không có quyền tạo
người dùng khác, checkRight() sẽ trả về false, ngược lại, checkRight() trả về
true. Nếu người dùng có quyền tạo người dùng khác (checkRight()=true), JSP gọi phương thức newObject() trong bean phiên UserController, đến lượt
UserController tiếp tục gọi phương thức newObject() trong bean thực thể Users
để thực hiện.
Từ phân tích trên, ta có thể rút ra những hạn chế của phương pháp truy cập hiện tại:
- Phức tạp: Người phát triển là người viết luôn các chính sách điều khiển truy cập hệ thống chứ không chỉ tập trung vào các chức năng nghiệp vụ. Điều này yêu cầu người phát triển nắm vững cả về phát triển ứng dụng, phát triển thành phần và tích hợp hệ thống.
- Không linh hoạt: Nếu cần thay đổi chính sách truy cập, cần sửa đổi hầu
hết các thành phần trong hệ thống như các file JSP, các thành phần EJB, v.v...
- Không đảm bảo an toàn: Việc viết các chính sách điều khiển truy cập phụ thuộc vào kinh nghiệm của người phát triển ứng dụng. Nếu có một lỗ hổng về an ninh rất khó tìm ra lỗ hổng đó nằm tại bước nào để khắc phục.
- Không có tính mở: Trong trường hợp cần phát triển một ứng dụng phía
client có thể dùng chung các thành phần EJB, trên ứng dụng đó bắt buộc phải viết lại toàn bộ các chính sách điều khiển truy cập một lần nữa.