У меня есть следующий рабочий код, который успешно подключается к WS с помощью WSSecurity с аутентификацией UsernameToken:
public void addValidation(
Stub stub) throws Exception {
ServiceClient serviceClient = stub._getServiceClient();
serviceClient.engageModule("rampart");
Options options = serviceClient.getOptions();
options.setProperty(
WSSHandlerConstants.OUTFLOW_SECURITY,
getOutflowConfiguration());
serviceClient.setOptions(options);
}
private Parameter getOutflowConfiguration() {
OutflowConfiguration outflowConfiguration =
new OutflowConfiguration();
outflowConfiguration.setActionItems(
"UsernameToken");
outflowConfiguration.setUser(
this.username);
outflowConfiguration.setPasswordType(
"PasswordText");
outflowConfiguration.setPasswordCallbackClass(
"es.ssib.otic.inte_portafib.cliente_custodia_axis2.PWCBHandler");
return
outflowConfiguration.getProperty();
}
Теперь, поскольку я хочу передать пароль программно, я пытаюсь настроить пароль в качестве параметра, но он не работает.
Я попытался заменить «конфигурацию оттока» на
options.setUserName(
this.username);
options.setPassword(
this.password);
Но эти поля полностью игнорируются Axis 2.
Я пытался использовать в этом примере
public void addValidation(
Stub stub) throws Exception {
ServiceClient serviceClient =
stub._getServiceClient();
Options options = serviceClient.getOptions();
options.setUserName(this.username);
options.setPassword(this.password);
options.setProperty(
RampartMessageData.KEY_RAMPART_OUT_POLICY,
loadPolicy());
serviceClient.engageModule("rampart");
}
private Policy loadPolicy() throws XMLStreamException, IOException {
InputStream resource = new FileInputStream([path to policy.xml]");
StAXOMBuilder builder = new StAXOMBuilder(resource);
return PolicyEngine.getPolicy(builder.getDocumentElement());
}}
с этим файлом политики
<wsp:Policy wsu:Id="UsernameToken" xmlns:wsu=
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SupportingTokens
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/
ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"/>
</wsp:Policy>
</sp:SupportingTokens>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
но это не с сообщением:
Неверное значение включения: -1
Я использую Rampart 1.5 с Axis2 1.4
ОБНОВЛЕНИЕ: я знаю, как заставить CallbackHandler проверять статическую константу или вызывать некоторый объект данных для получения пароля. Но я не хочу этого делать.