Я работаю над клиентом, который использует веб-службу https (код клиента, созданный с помощью JAX-WS RI). Сервер требует аутентификации пользователей, предоставляемой с различными файлами PKCS12. Когда мой клиент запускается, я устанавливаю хранилище ключей и доверительное хранилище следующим образом:
System.setProperty("javax.net.ssl.keyStore",fileKeystore);
System.setProperty("javax.net.ssl.keyStorePassword",pwdKeystore);
System.setProperty("javax.net.ssl.keyStoreType","PKCS12");
System.setProperty("javax.net.ssl.trustStore",fileTruststore);
System.setProperty("javax.net.ssl.trustStorePassword",pwdTruststore);
System.setProperty("javax.net.ssl.trustStoreType","JKS");
Затем я использую WS, и все работает:
string result = myClient.WSMethod(...);
Я знаю, что эти системные свойства не могут быть изменены таким же образом после установки. Итак, если мне нужно изменить хранилище ключей для использования веб-службы, без перезагрузки моего сервера, как другого пользователя, что мне делать?
Другими словами, я бы достиг такого поведения:
- Использовать WS, используя хранилище/доверие пользователя пользователя # 1
- Потребляйте WS, используя хранилище/хранилище доверия пользователя # 2
- ....
Поиск в SO Я читал о создании SSLContext, но я немного смущен о том, как это сделать и назначить его соединению с WS.