我使用 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();
...
一切正常。当Web Service的服务器端的实现由客户端执行时,我想知道哪个客户端正在执行代码(管理权限)。知道每个客户端都有自己的证书,如何在 Web 服务调用之前获取用于 TLS 协商的客户端证书?(我更愿意根据客户端证书分析找到解决方案,而不是为每个 Web Service 调用添加标识信息)。
谢谢您的帮助。