Tôi đang sử dụng JConsole để truy cập MBean đang chạy.Bỏ qua yêu cầu JConsole cho tên người dùng/mật khẩu - khi sử dụng mô-đun đăng nhập tùy chỉnh Jaas với JMX để xử lý ủy quyền và xác thực
Các MBean sử dụng một module đăng nhập tùy chỉnh JAAS và đang chạy với lệnh sau:
java -classpath UserLGUGroupHandlingApplication.jar;MBeanSecure.jar
-com.sun.management.jmxremote.login.config=management.properties
-Djava.security.auth.login.config=./sample_jaas.config
com.test.running.RunningImplementation
Với file management.properties tìm kiếm như thế này:
com.sun.management.jmxremote.access.file=jmxremote.access
com.sun.management.jmxremote=true
com.sun.management.jmxremote.authenticate=true
com.sun.management.jmxremote.port=1234
com.sun.management.jmxremote.login.config=Sample
com.sun.management.jmxremote.ssl=false
com.sun.management.jmxremote.ssl.need.client.auth=false
và sample_jaas.config:
Sample {
test.module.AETTLoginModule required debug=true;
};
và sau đó người dùng sẽ truy cập quy trình đang chạy này bằng cách đăng nhập vào throug h JConsole từ dòng lệnh.
jconsole -debug //or just jconsole
Người dùng chọn 'kết nối từ xa', với RemoteProcess 'localhost: 1234'
Các LoginModule xử lý các xác nhận người sử dụng và thiết lập gốc dựa trên người sử dụng hiện đang đăng nhập vào Windows, được sử dụng để truy vấn logic ủy quyền riêng biệt để xác định cấp truy cập.
Những gì tôi muốn xảy ra: enteres
- tài jconsole vào cmd
- Cửa sổ jconsole mở ra.
- Người dùng nhập địa chỉ của quá trình, ví dụ: "localhost: 1234"
- Người dùng không nhập tên người dùng hoặc mật khẩu (vì điều này là không bắt buộc vì ủy quyền được xử lý bởi mô-đun đăng nhập tùy chỉnh jaas).
- Mô-đun xác định xem người dùng có ghi đè, chỉ đọc hoặc không có quyền truy cập hay không.
- Cửa sổ Jconsole để mở quy trình hoặc không đăng nhập được.
Các Vấn đề:
Để truy cập vào quá trình jmx trong cửa sổ jconsole tôi phải nhập tên người dùng và mật khẩu giả, ví dụ U: a, P: a, nếu không tôi nhận được lỗi sau:
java.lang.SecurityException: Authentication failed! Credentials required
at com.sun.jmx.remote.security.JMXPluggableAuthenticator.authenticationFailure(JMXPluggableAuthenticator.java:193)
at com.sun.jmx.remote.security.JMXPluggableAuthenticator.authenticate(JMXPluggableAuthenticator.java:145)
at sun.management.jmxremote.ConnectorBootstrap$AccessFileCheckerAuthenticator.authenticate(ConnectorBootstrap.java:201)
at javax.management.remote.rmi.RMIServerImpl.doNewClient(RMIServerImpl.java:213)
at javax.management.remote.rmi.RMIServerImpl.newClient(RMIServerImpl.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:303)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
at javax.management.remote.rmi.RMIServerImpl_Stub.newClient(Unknown Source)
at javax.management.remote.rmi.RMIConnector.getConnection(RMIConnector.java:2327)
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:277)
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:225)
at sun.tools.jconsole.ProxyClient.tryConnect(ProxyClient.java:334)
at sun.tools.jconsole.ProxyClient.connect(ProxyClient.java:296)
at sun.tools.jconsole.VMPanel$2.run(VMPanel.java:280)
Câu hỏi
Đối với các module đăng nhập JAAS để chạy tôi cần tập sau:
-Dcom.sun.management.jmxremote.authenticate=true
Nhưng , điều này cũng tạo ra một điều kiện trong JConsole, nơi các trường username và passowrd phải được mở trong trường.
Nếu điều này được đặt thành false, mô-đun đăng nhập sẽ không bao giờ được gọi.
Có thể một trong hai mở rộng chức năng jconsole cho một trường hợp đặc biệt, áp dụng một thiết lập cấu hình, hoặc kích hoạt một module JAAS đăng nhập mà không cần phải thiết lập:
-Dcom.sun.management.jmxremote.authenticate=true
Để ngăn chặn sự cần thiết phải bước vào một tên truy nhập và mật khẩu trong các lĩnh vực sau tô sáng bên dưới:
tôi đang tìm kiếm một giải pháp tương tự như một trong những chứng minh here. Nhưng không cần người dùng nhập vào trường tên người dùng hoặc mật khẩu. EDIT: Ngoài ra, để làm rõ, điều này sẽ cần phải được thực hiện mà không cần sửa đổi phía khách hàng JCONSOLE, do đó, hoàn toàn bằng cách sử dụng thay đổi phía máy chủ và các thiết lập.
Cảm ơn bạn, tuy nhiên, câu hỏi của tôi là cụ thể về sửa đổi cần jconsole cho người sử dụng đầu vào theo yêu cầu. Nghiên cứu điển hình tập trung vào JaasLoginModule và mã phía máy khách. – Loco234
Vui lòng không đăng câu trả lời chỉ vì các liên kết có thể bị hỏng. – NathanOliver
Re: chỉnh sửa. Tôi tò mò muốn biết liệu có cách tiếp cận thẳng về phía trước này hay không, vì việc sử dụng mô-đun đăng nhập Jaas là một yêu cầu chung. Nó sẽ có vẻ lạ để chỉ giới hạn người dùng và mật khẩu đầu vào thông tin xác thực bằng cách sử dụng các lĩnh vực trong Jconsole. Suy nghĩ tức thì của tôi là trỏ đến tệp cấu hình jaas trong khi thiết lập com.sun.management.jmxremote.authenticate = false. Tạo ngữ cảnh được xử lý bởi một tập lệnh riêng biệt được gọi trong loginmodule, bỏ qua sự cần thiết cho các thông tin người dùng được kiểm tra vì chúng sẽ dựa trên người dùng hiện đang đăng nhập. – Loco234