2014-02-22 3 views
0

원격 서버 구현에서 연결된 클라이언트의 x509Certificate 객체에 대한 참조를 얻을 수 있습니까?SSL 클라이언트 인증을 사용하는 Java RMI : 클라이언트 x509Certificate

Rewrited의 RMISocketFactory :

RMISocketFactory.setSocketFactory(
     new java.rmi.server.RMISocketFactory() { 
      ... 
      @Override 
      public ServerSocket createServerSocket(int port) 
        throws IOException { 
       SSLServerSocket socket = ... 
       socket.setNeedClientAuth(true); 
       return socket; 
      } 
     }); 

원격 개체 : 당신은 RMI의 주요 설계 결함에 명중 한

public class RMIServer extends UnicastRemoteObject implements IRMIServer { 

    public RMIServer() throws RemoteException { 
     super(0); 
    } 

    @Override 
    public String foo() throws RemoteException { 
     System.out.println(getClientCertificate().getSubjectDN().getName()); // something like this? 
    } 
} 

답변

1

. 현재의 호출로 사용하고있는 SSLSocket를 실제로 알기 어렵 기 때문에, RMI 서버가 클라이언트 인증서를 보관 유지하는 것은 사실상 불가능합니다. 그들은 HandshakeCompletionListener와 같은 것을 첨부하는 방법을 제공해야합니다.

관련 문제