2012-03-20 18 views
0

簡而言之,我正在執行雙向SSL,並且客戶端證書用於識別最終用戶。 SSLHandler做得很好,SSLHandler知道所有關於該主體的信息。我如何與其他處理程序分享這些信息,以便他們可以在渠道管道中完成他們的工作?如何向ChannelHandlerContext(或其他地方)添加已驗證的用戶(主體)信息

這裏是我的SSLHandler擴展找到用戶主要...

...

類MySslHandler擴展SSLHandler {....

public void messageReceived(
     ChannelHandlerContext ctx, MessageEvent e) throws Exception{ 
    logger.info("messageReceived"); 
    super.messageReceived(ctx, e); 
     try{ 
       System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " + getPrincipalCertificate().getSubjectDN().toString()); 
         } 
         catch(Throwable t){ 
          logger.error("Unable to see principal ", t); 
         }   

}  
/** 
* 
* @return Return the user certificate of the principal 
* @throws SSLPeerUnverifiedException if the peer is not yet verified 
*/ 
public X509Certificate getPrincipalCertificate() throws SSLPeerUnverifiedException{ 
    return getEngine().getSession().getPeerCertificateChain()[0]; 
} 

} 

我大概要補充信息ChannelHandlerContext,因此在SSL會話期間以及所有其他處理程序中都可用,但我無法弄清楚如何執行此操作。這是錯誤的方法?有什麼建議麼?

謝謝!

回答

相關問題