Spring WS WSS4J - проверка подписи - алгоритм ограничения - PullRequest
0 голосов
/ 13 мая 2019

Я получил проверку подписи для работы с моим приложением Spring Boot с Spring WS и WSS4J. В соответствии с рекомендациями, мы хотим ограничить (на принимающей стороне), какие алгоритмы подписи мы разрешаем. По умолчанию WSS4J разрешает любой алгоритм.

Мне нужно настроить следующие компоненты:

@Bean
public CryptoFactoryBean getCryptoFactoryBean() throws IOException {
    CryptoFactoryBean cryptoFactoryBean = new CryptoFactoryBean();
    cryptoFactoryBean.setKeyStorePassword(new String(keystorePassword));
    cryptoFactoryBean.setKeyStoreLocation(new ClassPathResource(keystoreLocation));

    // These properties don't seem to do anything to enforce the algoritm :s
    Properties props = new Properties();
    props.put(WSHandlerConstants.SIG_ALGO, "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256");
    props.put(WSHandlerConstants.SIG_DIGEST_ALGO, "http://www.w3.org/2001/04/xmlenc#sha256");
    cryptoFactoryBean.setConfiguration(props);

    return cryptoFactoryBean;
}

И перехватчик:

 @Bean
public Wss4jSecurityInterceptor securityInterceptor() throws Exception {
    Wss4jSecurityInterceptor securityInterceptor = new Wss4jSecurityInterceptor();

    securityInterceptor.setValidationActions("Signature");
    securityInterceptor.setValidationSignatureCrypto(getCryptoFactoryBean().getObject());

    return securityInterceptor;
}

Что я делаю не так? Я хочу разрешить только указанный алгоритм, и проверка подписи должна завершиться неудачей на любом другом (например, sha1). Я мог бы написать пользовательскую проверку, но я ожидал, что фреймворк сможет это проверить.

...