Использование Wss4jSecurityInterceptor для добавления userNameToken и Signature securityActions не работает, поскольку BinarySecurityToken и UsernameToken берут один и тот же пароль и имя пользователя из securityInterceptor.
@Bean
public Wss4jSecurityInterceptor securityInterceptor() throws Exception {
Wss4jSecurityInterceptor securityInterceptor = new Wss4jSecurityInterceptor();
CryptoFactoryBean crypto = new CryptoFactoryBean();
crypto.setKeyStoreLocation(getResourceFrom(keyStoreLocation));
crypto.setKeyStorePassword(encryptorService.decrypt(keyStorePassword));
crypto.setKeyStoreType("JKS");
crypto.afterPropertiesSet();
securityInterceptor.setSecurementActions(WSHandlerConstants.SIGNATURE + " " + WSHandlerConstants.TIMESTAMP + " " + WSHandlerConstants.USERNAME_TOKEN);
securityInterceptor.setSecurementSignatureKeyIdentifier("DirectReference");
securityInterceptor.setSecurementSignatureCrypto(crypto.getObject());
securityInterceptor.setSecurementUsername(userName);
securityInterceptor.setSecurementPassword(encryptorService.decrypt(password));
return securityInterceptor;
}
если имя пользователя и пароль одинаковы для обоих, то это работает, как я могу установить другой пароль пользователя.
это было возможно до использования: securityCallbackHandlers, но с версией wpring-ws 2.4.2 это больше невозможно