Có cách nào hợp pháp để thêm/xóa quyền đối với chính sách bảo mật Java trong thời gian chạy không?Cập nhật chính sách bảo mật Java khi chạy?
Trả lời
Từ 1.4 động ProtectionDomain
s có thể ủy quyền cho Policy
. Tự động xóa quyền từ mã sẽ không có ý nghĩa gì. Hai dạng đối số của AccessController.doPrivileged
cũng có thể hữu ích.
Javadoc nói rằng Policy.refresh()
cho chính sách dựa trên tệp sẽ đọc lại tệp. Do đó, có thể sửa đổi chính sách toàn hệ thống khi chạy bằng cách chỉnh sửa tệp chính sách và sau đó gọi Policy.refresh()
Bạn sẽ thấy rằng các quyền đã được sao chép ra khỏi Chính sách và vào trong ProtectionDomains của Lớp và Lớp tải. –
Điều này đã làm việc tốt cho tôi khi thiết lập chính sách thông qua '' System.setProperty ("java.security.policy", policyURL) '', sau đó làm mới '' Policy.policy.refresh() '' và sau đó cài đặt trình quản lý bảo mật '' System.setSecurityManager (new SecurityManager()); ''. – BenR
Có thể đặt triển khai Chính sách tùy chỉnh, sử dụng phương thức Policy.setPolicy()
. Ví dụ: xem JAAS in Action cuốn sách.
Chúng tôi đang phát triển một khung dựa trên OSGi, cần phải chạy dài và tránh khởi động lại càng nhiều càng tốt. Khung làm việc là SAAS, nhưng khách hàng có thể triển khai các gói (plugins) riêng cho hệ thống. Vì vậy, đối với chúng tôi nó sẽ được tốt đẹp để sửa đổi quyền trong thời gian chạy. –