我有一个Java应用程序,我添加了一个JAX-WS接口,并且已经通过HTTPS运行它,但我希望能够进行双向SSL身份验证。我有两种密钥库和证书设置,并且都是可信的,但是我可以在服务器端验证客户端证书时找到的所有代码示例都不起作用,因为我没有在Tomcat / Glassfish中运行它,如下所示:
@Resource WebServiceContext wsCtx;
@WebMethod
public int add(@WebParam(name="i") int i, @WebParam(name="j") int j) {
MessageContext context = wsCtx.getMessageContext();
Subject clientSubject = null;
try {
clientSubject = SubjectAccessor.getRequesterSubject(context);
} catch(Exception e) {
e.printStackTrace();
}
if (clientSubject != null) {
Set publicCreds = clientSubject.getPublicCredentials(
for (Iterator it = publicCreds.iterator(); it.hasNext();) {
System.out.println("Client Cert:" + it.next());
//use our code to create the Certificate here.
break;
}
} else {
System.out.println("Client Cert not set");
}
....对于获取上下文对象和检查客户端证书匹配的原生等效物是什么?谢谢!