use*_*562 9 java authentication web-services certificate httpserver
我使用Sun Ws实现编写了一个Web服务服务器,并使用HttpsServer进行发布(TLS相互身份验证).
httpServer=HttpsServer.create(...);
ssl=SSLContext.getInstance("TLS");
...
ssl.init(keyFactory.getKeyManagers(),trustFactory.getTrustManagers(),new SecureRandom());
configurator=new HttpsConfigurator(ssl) {
public void configure (HttpsParameters params)
{
SSLContext context;
SSLParameters sslparams;
context=getSSLContext();
sslparams=context.getDefaultSSLParameters();
sslparams.setNeedClientAuth(true);
params.setSSLParameters(sslparams);
}
};
((HttpsServer)httpServer).setHttpsConfigurator(configurator);
...
endPoint=getSunWsProvider().createEndPoint(...);
httpContext=httpServer.createContext(...);
endPoint.publish(httpContext);
httpServer.start();
...
Run Code Online (Sandbox Code Playgroud)
一切正常.当客户端执行Web服务的服务器端实现时,我想知道哪个客户端正在执行代码(以管理权限).知道每个客户端都有自己的证书,如何在Web服务调用之前获取用于TLS协商的客户端证书?(我更愿意找到基于客户端证书分析的解决方案,而不是为每个Web服务调用添加标识信息).
谢谢您的帮助.
在你的处理程序中,你得到的不是实例,而是具有额外方法HttpExchange
的其子类的实例:HttpsExchange
抽象SSLSession getSSLSession();
SSLSession 暴露了对等身份的许多其他内容