Надеюсь, кто-то видел это раньше. Я пытаюсь проверить входящее сообщение 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");
Я не добавляю никаких дополнительных ограничений. Из всего, что я прочитал, кажется, что это должно «просто работать», поэтому я не уверен, что мне не хватает.
Любая помощь приветствуется.