Короче говоря, я делаю двусторонний SSL, а сертификат клиента используется для идентификации моего конечного пользователя.SSLHandler отлично справляется с этой задачей, и SSLHandler знает все об этом принципе.Как я могу поделиться этой информацией с другими обработчиками, чтобы они могли выполнять свою работу по всему конвейеру канала?
Здесь мое расширение 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 и для всех других моих обработчиков, но яне могу понять, как это сделать.Это неправильный подход?Есть предложения?
Спасибо!