RMI에서 JMX 인증을 구현하기 위해 JMXAuthenticator
을 구현했지만 읽기 전용/읽기 쓰기 액세스 수준을 허용하는 역할을 만드는 방법을 모르겠습니다. 예를 들어, JMXAuthenticator.authenticate
에 사용자 정의 인증 논리가 있으며 액세스 역할을 결정하기를 원합니다. 나는 다음을 시도했지만 그것은 JConsole의에서 작업을 수행 차이도하지 않습니다 :JMX 인증 - 역할 기반 MBean 작업
adminuser readwrite
basicuser readonly
및 com.sun.management.jmxremote.access.file=PATH TO ACCESS FILE
을 포함 jmx.management.properties
을 포함,
@Override
public Subject authenticate(Object credentials) {
Subject subject = new Subject();
JMXPrincipal p;
//...my logic
String accessLevel = myCustomLogic();
if (accessLevel.equals("admin")) {
p = new JMXPrincipal("adminrole");
} else {
p = new JMXPrincipal("basicrole");
}
subject.getPrincipals().add(p);
return subject;
}
그때 액세스 파일, jmxaccess.properties
을 만들었을하고 난을 실행 응용 프로그램은 -Dcom.sun.management.config.file=PATH TO jmx.management.properties
입니다.
그러나 JConsole을 통해 연결하고 기본 사용자 (읽기 전용 액세스)로 인증하면 bean의 setter에 액세스 할 수 있습니다. 전체 service:jmx:rmi:...
URL을 통해 연결 중입니다.
그래서 제 질문은
- 내가/주석에만 관리자 사용자로 볼을 지정하는 내 콩의 세터에 아무것도 할 필요가 있는가인가?
JMXAuthenticator
이 반환하는Subject
개체를 올바르게 작성하지 않았습니까?- 다른 구성/설정이 누락 되었습니까?
감사
편집 내 MBean의
공공 getter 및 setter 더하기 하나 개는 다른 공공 방법이 개인 필드 단지 기본적인 POJO이다.