Код: Выделить всё
...
Я настроил STSClient следующим образом:
Код: Выделить всё
@Test
void stsTest() throws Exception {
var stsClient = new STSClient(bus);
stsClient.setWsdlLocation("classpath:STS.wsdl");
stsClient.setServiceQName(new QName(NAMESPACE, STS_SERVICE_NAME));
stsClient.setEndpointQName(new QName(NAMESPACE, STS_ENDPOINT_NAME));
stsClient.setSendRenewing(false);
stsClient.setSendKeyType(false);
var crypto = new Merlin();
crypto.setKeyStore(createInMemoryKeyStore());
stsClient.getProperties().put(SecurityConstants.SIGNATURE_USERNAME, "username");
stsClient.getProperties().put(SecurityConstants.SIGNATURE_CRYPTO, crypto);
stsClient.getProperties().put(SecurityConstants.CALLBACK_HANDLER, (CallbackHandler) callbacks -> {
for (Callback callback : callbacks) {
if (callback instanceof WSPasswordCallback) {
WSPasswordCallback pc = (WSPasswordCallback) callback;
pc.setPassword("password123");
}
}
});
stsClient.getOutInterceptors().add(createLoggingOutInterceptor());
stsClient.requestSecurityToken();
}
Код: Выделить всё
org.apache.cxf.interceptor.Fault: No username available
Можно ли как-то настроить STSClient для использования X509Token? Если я удалю UsernameToken из SupportedTokens - все будет работать нормально, но мне не хотелось бы менять WSDL, потому что он не мой.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -stsclient
Мобильная версия