Не удалось установить доверие подписи для записи метаданных с помощью FilesystemMetadataProvider - PullRequest
0 голосов
/ 29 июня 2019

Я использую spring-boot-security-saml-sample приложение и настроил его с моим IDP. Метаданные IDP - это файл XML, и я настроил его для экземпляра FilesystemMetadataProvider. Поток SAML работает правильно, если у меня extendedMetadataDelegate.setMetadataTrustCheck(false); в моем ExtendedMetadataDelegate, но как только я изменяю его на true, я вижу следующую ошибку в stacktrace:

2019-06-29 20:02:18.726 ERROR 1032 --- [Metadata-reload] o.s.s.s.t.MetadataCredentialResolver     : PKIX path construction failed for untrusted credential: [subjectName='CN=1.idp.host.com,O=Org,L=City,ST=State,C=Country']: unable to find valid certification path to requested target
2019-06-29 20:02:18.736 ERROR 1032 --- [Metadata-reload] o.o.s.m.p.SignatureValidationFilter      : Signature trust establishment failed for metadata entry IDP.Entry.Point
2019-06-29 20:02:18.740 ERROR 1032 --- [Metadata-reload] .s.m.p.AbstractReloadingMetadataProvider : Error filtering metadata from ...\java\demo-saml\src\main\resources\saml\metadata.xml

org.opensaml.saml2.metadata.provider.FilterException: Signature trust establishment failed for metadata entry
        at org.opensaml.saml2.metadata.provider.SignatureValidationFilter.verifySignature(SignatureValidationFilter.java:327) ~[opensaml-2.6.1.jar!/:?]
        at org.opensaml.saml2.metadata.provider.SignatureValidationFilter.processEntityDescriptor(SignatureValidationFilter.java:178) ~[opensaml-2.6.1.jar!/:?]
        at org.opensaml.saml2.metadata.provider.SignatureValidationFilter.doFilter(SignatureValidationFilter.java:156) ~[opensaml-2.6.1.jar!/:?]
        at org.opensaml.saml2.metadata.provider.AbstractMetadataProvider.filterMetadata(AbstractMetadataProvider.java:493) ~[opensaml-2.6.1.jar!/:?]
        at org.opensaml.saml2.metadata.provider.AbstractReloadingMetadataProvider.processNonExpiredMetadata(AbstractReloadingMetadataProvider.java:395) [opensaml-2.6.1.jar!/:?]
        at org.opensaml.saml2.metadata.provider.AbstractReloadingMetadataProvider.processNewMetadata(AbstractReloadingMetadataProvider.java:355) [opensaml-2.6.1.jar!/:?]
        at org.opensaml.saml2.metadata.provider.AbstractReloadingMetadataProvider.refresh(AbstractReloadingMetadataProvider.java:261) [opensaml-2.6.1.jar!/:?]
        at org.opensaml.saml2.metadata.provider.AbstractReloadingMetadataProvider.doInitialization(AbstractReloadingMetadataProvider.java:236) [opensaml-2.6.1.jar!/:?]
        at org.opensaml.saml2.metadata.provider.AbstractMetadataProvider.initialize(AbstractMetadataProvider.java:407) [opensaml-2.6.1.jar!/:?]

Из Spring-Security-Saml Docs , я вижу, что:

Импорт метаданных с цифровой подписью требует проверки достоверности и доверия подписи. Метаданные не обязательно должны быть подписаны по умолчанию. При наличии подпись проверяется с помощью алгоритма PKIX и использует все открытые ключи, присутствующие в сконфигурированном keyManager, в качестве якорей доверия. Не забудьте включить сертификат корневого CA и сертификаты промежуточного CA подписи в хранилище ключей.

Как я могу импортировать сертификаты, чтобы проверка прошла успешно? Мне сказали, что IDP подписал метаданные cacerts. Разве он не должен пройти проверку доверия автоматически? Если нет, то почему? Я думал, что смысл подписания чего-либо с помощью cacerts был фактором доверия.

...