当前位置: 首页 > 知识库问答 >
问题:

用OpenSAML v3从IDP元数据创建凭据对象

逄岳
2023-03-14

我正在尝试验证从SSO Sircle(IDP)返回的SAML响应。为此,我使用SSO circle(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编写的。我想知道在初始化对象时是否做错了什么。

共有1个答案

端木令雪
2023-03-14

经过对OpenSaml3 Java文档和Shibboleth开发社区的深入研究,我想我找到了我的问题的答案。元数据解析器对象需要如下设置:

    FilesystemMetadataResolver idpMetadataResolver = new FilesystemMetadataResolver(new File("C:\\idp.xml"));
    idpMetadataResolver.setRequireValidMetadata(true);
    idpMetadataResolver.setParserPool(XMLObjectProviderRegistrySupport.getParserPool());
    idpMetadataResolver.setId("someidentifier");
    idpMetadataResolver.initialize();
 类似资料:
  • 为了和Azure IoT设备通信,在创建设备之后会获得设备连接字符串,我们需要用这个字符串创建一个连接凭据。 请求方式: "|4|2|1|connectionString|" 参数 connectionString 设备连接字符串 返回值: "|4|2|1|1|\r" 创建成功 "|4|2|1|2|reason|\r" 创建失败 参数 reason 创建失败的原因 Arduino样例: softS

  • 问题内容: 我正在尝试使用SSMS在Azure SQL中创建范围凭证。 我不断遇到错误消息,指出“’cred-name’附近的语法不正确。预期为’=’。” 我不确定我的语法是不正确的,因为我过去已经成功完成了此确切命令,所以我不确定发生了什么变化。我以为可能只是intellisense搞砸了,所以我将SSMS实例从17.3更新到17.7,但是我仍然收到相同的错误消息。 有谁知道可能会发生什么变化?

  • 我使用SSOCIRCE实现了Spring SAML示例应用程序,效果很好。现在我一直在尝试为客户的ADF实现它。以下是我认为需要的配置,如果我错了,请纠正我: 将下面的第一个参数更改为federationMetadata。客户端提供的xml url 我还没有弄明白以下几点: 我只收到了adfs/的url/联邦元数据。xml,谁应该创建SP元数据 我是否应该创建SP元数据并提供给客户端,以便将其添加

  • 问题内容: 我终于从包含许多json对象的文件中获得了我需要的数据输出,但是当它在数据中循环时,我需要一些帮助将以下输出转换为单个数据帧。这是产生输出的代码,包括输出外观的示例: 原始数据: 运行上面的命令时,我将获得示例输出,我希望将其存储为3列的pandas数据框中。 因此,以下代码似乎更接近,因为如果我在列表中传递并转置df,它会给我一个时髦的df。关于如何正确调整此形状的任何想法吗? 数据

  • 这是获得SQL结果集的一个非常常见的方法,因为一对多的关系······对于一个相当简单的结构执行冗余查询似乎是不必要的(而且可能是低效的)。是否有一种已建立的简单的方法将其解析为java对象?也就是说,我不想迭代ResultSet类并为每一行创建和设置一个新对象,而是要迭代集合并为每一个父行创建一个新对象,为每一个子行创建一个新对象。 例如,一种方法是按父主键对查询进行排序,然后仅当父id更改时才

  • 我正在进行一个项目,该项目重用https://github.com/vdenotaris/spring-boot-security-saml-sample以IDP身份与Azure AD集成。 整合进行得相当顺利。我唯一不能修复的是元数据信任检查。 根据 https://docs.spring.io/autorepo/docs/spring-security-saml/1.0.x/reference