Я использую JBoss Web Services для приложения платежного сервиса. В какой-то момент мне нужно сделать удаленные SOAP-звонки поставщику платежных услуг и пройти аутентификацию с помощью токена имени пользователя.
Единственный способ узнать, как это сделать с JBossWS, это:
Map<String, Object> requestContext = ((BindingProvider)port).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, "foobar");
requestContext.put(BindingProvider.PASSWORD_PROPERTY, "changeme");
Но проблема здесь в том, что пароль "changeme" теперь находится в памяти как объект String, и я не могу контролировать, когда, если вообще когда-либо, будет собираться мусор. Если злоумышленник сбрасывает память на этом этапе, он может найти учетные данные.
Есть ли другой способ сделать безопасные вызовы SOAP с помощью JBossWS, где я могу контролировать, как долго пароль остается в памяти?