2017-10-28 6 views
0

우리는 우리의 제품에 고객 인터페이스와 내부 인터페이스라는 두 개의 인터페이스를 가지고 있습니다. rmi가 루프백과 같은 특정 인터페이스에서만 작동하도록 할 수 있습니까? 아니면 액세스를 차단하기 위해 방화벽 규칙을 사용해야합니까?Java RMI를 특정 인터페이스로 어떻게 제한 할 수 있습니까?

서버가 지정된 인터페이스에서만 요청하도록 바인드하는 방법이 있습니까? 서버에서 설정할 수있는이 속성을 찾았습니다. 외부 요청을 방지합니까?

-Djava.rmi.server.hostname=127.0.0.1

rmiregistry는 그것이 MySQL의의 바인드 옵션과 같은 수신 대기하는 인터페이스를 선택해야하는 방법이 있나요?

이 질문은 관련 보인다 그러나 나는 간단한 대답을 바라고 있어요 : Java RMI: How can I restrict RMI method to only be called internally by the client object

+0

그래, 가능한 소켓 공장을 사용하여. https://docs.oracle.com/javase/7/docs/api/java/rmi/server/UnicastRemoteObject.html#UnicastRemoteObject(int,%20java.rmi.server.RMIClientSocketFactory,%20java.rmi.server.RMIServerSocketFactory) – Antoniossss

답변

1

내가이 외부 요청을 방지 않습니다 서버에 설정할 수있는이 속성을 발견? 어떤 IP 주소 속성 컨트롤이 JVM에서 내 보낸 개체를 제거의 스텁에 배치되는 것을

-Djava.rmi.server.hostname=127.0.0.1 

. 그것들을 'localhost'설정의 클라이언트로 제한하고 싶다면 실제로 작동하지만 큰 해결책은 아닙니다.

RMIServerSocketFactory으로 원격 개체를 내 보내야 ServerSockets이 원하는 특정 IP 주소에 바인딩됩니다.

rmiregistry가 mysql의 바인드 옵션처럼 수신 대기하는 인터페이스를 선택하는 방법이 있습니까?

같은 대답입니다. LocateRegistry.createRegistry(int port, RMIServerSocketFactory ssf, RMIClientSocketFactory csf)을 통해 직접 레지스트리를 내 보내야합니다. csf은 물론 null 일 수 있습니다.

내 보낸 JVM에서 두 개 이상의 인스턴스를 사용하는 경우 RMIServerSocketFactory의 실현 가능한 구현이 equals()인지 확인하십시오. 바인드 IP 주소가 같으면 동일합니다.

이 질문

관련 보인다는 없습니다.

+0

권장하는 RMI 포트를 보호하는 더 좋은 방법이 있습니까? 주요 목표는 고객 네트워크의 악용을 방지하는 것입니다. – simgineer