Я наконец нашел ответ на свой вопрос. Имейте в виду, я использую CXF.
Поэтому, когда я вызываю wsdl2java для wsdl, я получаю кучу сгенерированного кода. В частности, есть две части, которые обрабатывают авторизацию, точно названную Authorization и AuthorizationService. В моем коде для вызова этих ссылок я делаю следующее
AuthorizationService authSvc = new AuthorizationService();
Authorization authWs = authSvc.getAuthorizationPort();
На этом этапе вам необходимо создать свой собственный keyManager и trustmanager, создав новое хранилище ключей из выбранного сертификата. Хорошее место для начала - это
Тогда вам нужно построить TLSClientParameters
TLSClientParameters params = new TLSClientParameters();
params.setKeyManagers(keyManagers);
params.setTrustManagers(trustManagers);
Затем создайте свой HTTPConduit.
HTTPConduit conduit = (HTTPConduit) ClientProxy.getClient(authWs).getConduit();
conduit.setTlsClientParameters(params);
И затем вы можете использовать свой веб-сервис с сертификатом, выбранным вашим пользователем.