WSS4J не проверяет подпись на основе KeyValue с цепочкой доверия. Проблема с конфигурацией? - PullRequest
0 голосов
/ 26 мая 2020

Надеюсь, кто-то видел это раньше. Я пытаюсь проверить входящее сообщение SOAP с подписью в утверждении SAML. Все, что я получаю для KeyInfo, - это модуль и показатель степени RSAKeyValue. Похоже, подпись не проверяется, потому что не удается найти PublicKey в хранилище доверенных сертификатов. PublicKey выдается из ЦС, промежуточное звено которого и root находятся в хранилище доверенных сертификатов, поэтому это должен быть случай цепного доверия. Когда я просматриваю код в Merlin. java (findPublicKeyInKeyStore ()), я вижу, что он проверяет root и промежуточные сертификаты из хранилища доверенных сертификатов, но, очевидно, совпадений нет. Вот свойства, которые я устанавливаю для конечной точки CXF:

    props.put("org.apache.ws.security.crypto.merlin.truststore.type","jks");
    props.put("org.apache.ws.security.crypto.merlin.truststore.file",this.ehexServerSamlKeyStore);
    props.put("org.apache.ws.security.crypto.merlin.truststore.provider","SUN");
    props.put("org.apache.ws.security.crypto.merlin.truststore.password",this.ehexServerSamlKeyStorePassword);
    properties.put("security.signature.properties", props);
    properties.put("ws-security.validate.audience-restriction", "false");

Я не добавляю никаких дополнительных ограничений. Из всего, что я прочитал, кажется, что это должно «просто работать», поэтому я не уверен, что мне не хватает.

Любая помощь приветствуется.

...