2010-04-10 39 views
9

Tôi đang làm việc trên một dự án tình báo nhân tạo là một trò chơi logic và nhằm mục đích hai người dùng kết nối với máy chủ trên mạng hoạt động như một Quản trị viên và sau đó bắt đầu chơi từng người một.Nơi đặt tệp chính sách java applet?

Để tạo kết nối, tôi có mã máy chủ chỉ nghe trên máy chủ cục bộ: 8000 và gán giá trị nhóm cho khách hàng khi họ đến. Sau khi kết nối, khách hàng thực hiện di chuyển của họ dưới sự kiểm soát của Admin.

Câu hỏi đặt ra là khi tôi cố gắng để đưa mã của tôi để làm việc trong trình duyệt nó không thành công với các lỗi sau:

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8000 connect,resolve) 

Mặc dù tôi đã tạo chính sách của riêng tôi, đầu tiên cấp chỉ Ổ cắm cho phép truy cập vào codebase của thư mục dự án của tôi (file:///home/xxx/projects/-), sau khi nó không hoạt động, tôi được cấp tất cả các quyền từ tất cả codebase. Tôi đã thử đặt tệp chính sách của mình cả trong thư mục chính và trong cùng thư mục chứa mã applet của tôi.

Đánh giá cao mọi mẹo, cảm ơn.

+0

Khi tôi cố gắng chạy mã máy khách sau khi khởi động máy chủ từ bảng điều khiển như sau, tôi có thể nhận dạng tệp chính sách của chính tôi nằm trong thư mục chính của tôi: appletviewer -J-Djava.security.policy = mypolicy.policy file: ///home/xxx/NetBeansProjects/project/src/index.html Nhưng khi tôi cố gắng chạy từ IDE, nó không thành công: s – makdere

+0

ký (các) jar của applet có thể là dễ quản lý hơn một chút. Tiết kiệm bạn phải cài đặt một tập tin chính sách trên mỗi hộp bạn muốn nó chạy trên. – objects

Trả lời

11

theo mặc định tôi nghĩ rằng nó sẽ tìm kiếm một tập tin có tên .java.policy trong nhà của bạn thư mục

bạn có thể kiểm tra tệp /lib/security/java.security để xem vị trí của nó. kiểm tra các phím có tên policy.url.n

+1

Đổi tên tệp chính sách được tạo của riêng tôi thành .java.policy sau khi kiểm tra /lib/security/java.security để tìm ra nơi java tìm kiếm tệp chính sách, nó hoạt động. Cảm ơn every1 cho những lời khuyên. – makdere

+0

nếu sự cố của bạn được giải quyết, vui lòng nhấp vào dấu kiểm bên cạnh nhận xét (ở bên trái) đã giúp bạn. – objects

+0

cảm ơn bạn đời, vui vì nó đã giúp bạn – objects

0

Đặt tệp chính sách nơi JRE.

Ví dụ: tệp chính sách của tôi nằm ở C: \ Program Files \ Java \ jre1.6.0_01 \ lib \ security

0

Tôi đề xuất nên tôn trọng chính sách có cùng nguồn gốc. Các tác động an ninh không nhất thiết phải rõ ràng vào thời điểm tốt nhất. Ngoài ra, một applet với các quyền tiêu chuẩn có khả năng sử dụng tốt hơn và nên được duy trì dễ dàng hơn.

0

Nếu bạn cấp quyền cho một JAR (codebase) cụ thể, điều này chỉ hoạt động nếu toàn bộ chồng thực hiện từ đầu chuỗi đến lời gọi phương thức nằm trong miền mã hóa/bảo vệ đó.

Nếu phương pháp của bạn là thư viện, và bạn chắc chắn rằng bạn truy cập hoạt động một cách an toàn, bạn có thể sử dụng Chặn được bảo mật, về cơ bản đảm bảo phần ngăn xếp gọi khối của bạn không được xem xét trong tính toán truy cập.

Privileged Block, như mô tả ở đây:

http://docs.oracle.com/javase/6/docs/technotes/guides/security/doprivileged.html

Greetings Bernd

2

Bạn có thể thiết lập vị trí của tập tin chính sách bảo mật bằng cách sử dụng dòng lệnh tùy chọn này

-Djava.security.policy=policyfilepath 

với lệnh java.

Hoặc bạn thậm chí có thể đặt tính hợp lệ này bằng quy trình System.setProperty().

+0

Điều này có thể áp dụng cho một applet như thế nào? Hơn nữa tôi nghi ngờ rằng việc thiết lập thuộc tính hệ thống sau khi JVM đã bắt đầu có hiệu lực. – davmac