2017-02-20 5 views
0

SSP Sircle (IDP)에서 SAML 응답의 유효성을 검사하려고합니다. 하려고 할 때OpenSAML v3을 사용하여 IDP 메타 데이터에서 자격 증명 개체 만들기

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); 

그러나,이 예외가 발생 다음과 같이 그렇게하기 위해, 나는 IDP 공개 키를 사용하여 자격 증명 개체를 만들기 위해 SSO 원 (https://idp.ssocircle.com/idp-meta.xml)에 의해 제공되는 IDP 메타 데이터를 사용하고 있습니다 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 2.0에 대한 기록됩니다. 내가 개체를 초기화 할 때 뭔가 잘못하고 있는지 궁금 해서요.

답변

1

OpenSAML 3 Java 문서 및 Shibboleth 개발 커뮤니티를 조사한 결과 제 질문에 대한 답변을 찾은 것 같습니다. Metadata resolver 객체는 다음과 같이 설정해야합니다.

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