【问题标题】:Creating credential object from IDP Metadata with OpenSAML v3使用 OpenSAML v3 从 IDP 元数据创建凭证对象
【发布时间】:2017-07-09 23:35:13
【问题描述】:

我正在尝试验证我从 SSO Sircle (IDP) 返回的 SAML 响应。为此,我使用了 SSO 圈子 (https://idp.ssocircle.com/idp-meta.xml) 提供的 IDP 元数据,以便使用 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);

但是,这会在尝试初始化 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 编写的。我想知道初始化对象时是否做错了什么。

【问题讨论】:

    标签: single-sign-on saml saml-2.0 opensaml


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 2016-09-01
      • 2017-07-23
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多