2014-11-11 2 views
0

Netty에서 Jersey 프레임 워크를 사용하고 있습니다.Netty로 실행중인 저지에서 SSL 정보 (피어 cert)를 얻는 방법?

SSL 클라이언트 인증서를 통해 클라이언트를 인증하고 있습니다.

클라이언트가 호출 할 수있는 GET whoami() 메소드를 구현하려고합니다. Netty 서버를 호출하는 데 사용 된 클라이언트 SSL 인증서의 일부 정보를 응답에 포함 시키길 원합니다.

@Context 매개 변수를 사용해야한다고 생각하지만 SSLEngine을 찾는 데 실패했습니다.

나는 Girzzly [1]를 사용하여 원하는 것을 발견했지만 netty에서 비슷한 것을 찾지 못했습니다.

클라이언트 SSL 세부 정보에 액세스하는 방법에 대한 아이디어가 있습니까? Netty에서 어떤 컨텍스트 개체를 사용할 수 있습니까?

업데이트 설명 : 어떻게하면 @ @ GET 리소스 내부에서 ChannelPipeline에 액세스 할 수 있습니까? SSLEngine에 얻기 [1] http://jersey.576304.n2.nabble.com/Context-SecurityContext-not-initialized-with-SSL-client-certs-td7556681.html

답변

0

는 ChannelPipeline이의 Netty에서 초기화되는 방법에 따라 달라집니다. 한 가지 일반적인 패턴은 example과 같이 SslHandler을 파이프 라인에 삽입하는 것입니다. unit test 여기에 SslHandler에 랩핑되어 파이프 라인에 삽입 된 SSLEngine이 명시 적으로 표시됩니다. 파이프 라인 구성 방법을 알면 유형 또는 이름으로 ChannelPipeline.get(...)을 사용하여 파이프 라인에서 요소를 가져올 수 있습니다.

더 구체적인 답변을 보려면 구성에 대한 자세한 내용을 제공해야합니다. Netty와 Jersey가 상호 작용하는 방식이나 Netty의 인터페이스가 사용자에게 제공되는 방식에 익숙하지 않습니다.

+0

감사합니다. 내 파이프 라인은 링크 된 예와 거의 비슷하게 설정됩니다. 실제로 Netty의 인터페이스가 @ GET 주석이 달린 메소드 내부에 있는지 알아 내려고합니다. Grizzly 예제에서 @ Context Request 클래스에는 .getContext() 메소드가 있습니다. 그러나 Netty는 사용할 수없는 것으로 보입니다. – Gabe

+0

Netty는 서블릿 컨테이너가 아니며 Servlet 관련 클래스 (예 :'ServletContext')가 없습니다. 이 예에서도 Request 객체는 Gersey에서 온 것이지 Grizzly는 연결하지 않았습니다. 당신은 당신의 디자인, 어떻게/왜 저지와 Netty가 결합되어 상호 작용하는지 명확히해야 할 것입니다. Grizzly 구성이 서블릿 컨테이너와 다르게 상호 작용하는 것처럼 보입니다 (이 경우 서블릿 요청에 대한 연결 개체 설정). –