2017-02-20 39 views
0

Я пытаюсь проверить ответ SAML, который я возвращаю из SSO Sircle (IDP). Для того, чтобы сделать это, я использую IDP метаданных, предоставленную SSO кругу (https://idp.ssocircle.com/idp-meta.xml) для того, чтобы создать объект учетных данных с помощью открытого ключа IDP следующим образом:Создание объекта учетных данных из IDP метаданных с OpenSAML v3

FilesystemMetadataResolver idpMetadataResolver = new FilesystemMetadataResolver(new File("C:\\idp_metadata.xml")); 
    idpMetadataResolver.setRequireValidMetadata(true); 
    idpMetadataResolver.setParserPool(new BasicParserPool()); 
    idpMetadataResolver.initialize(); 

    MetadataCredentialResolver credentialResolver = new MetadataCredentialResolver(); 

    credentialResolver.setRoleDescriptorResolver(new BasicRoleDescriptorResolver(idpMetadataResolver)); 

    CriteriaSet criteriaSet = new CriteriaSet(); 
    criteriaSet.add(new EntityIdCriterion("https://idp.ssocircle.com")); 
    criteriaSet.add(new EntityRoleCriterion(IDPSSODescriptor.DEFAULT_ELEMENT_NAME)); 

    X509Credential credential = (X509Credential)credentialResolver.resolveSingle(criteriaSet); 

Однако, это бросает исключение при попытке инициализировать idpMetadataResolver:

net.shibboleth.utilities.java.support.component.ComponentInitializationException: Component identifier can not be null 
at net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent.doInitialize(AbstractIdentifiedInitializableComponent.java:65) 
at org.opensaml.saml.metadata.resolver.impl.AbstractMetadataResolver.doInitialize(AbstractMetadataResolver.java:188) 
at net.shibboleth.utilities.java.support.component.AbstractInitializableComponent.initialize(AbstractInitializableComponent.java:61) 

Я очень новой для OpenSAML, и я в основном смотрел на примеры и обучающие программы в Интернете, но большинство из них написаны для OpenSAML v2.0. Мне было интересно, если я делаю что-то неправильно при инициализации объектов.

ответ

1

После некоторого копания в OpenSAML 3 Java-документах и ​​сообществе разработчиков Shibboleth, я думаю, что нашел ответ на мой вопрос. Объект распознавателя метаданных необходимо настроить следующим образом:

FilesystemMetadataResolver idpMetadataResolver = new FilesystemMetadataResolver(new File("C:\\idp.xml")); 
    idpMetadataResolver.setRequireValidMetadata(true); 
    idpMetadataResolver.setParserPool(XMLObjectProviderRegistrySupport.getParserPool()); 
    idpMetadataResolver.setId("someidentifier"); 
    idpMetadataResolver.initialize();