0

我正在尝试使用配置 SAML 身份验证Spring's SAML extension。在使用注释方式尝试时Java Configuration。我需要获取IDP metadata fileSP metadata file来创建metadataManagerbean。

下面是相关配置:

@Bean(name="idpMetadata")
public ExtendedMetadataDelegate idpMetaData(){
    FilesystemMetadataProvider metadataProvider = null;
    try {
        metadataProvider = new FilesystemMetadataProvider(idpMetadataFile);
        metadataProvider.setParserPool(parserPool());
    }
    catch (MetadataProviderException e) {
        e.printStackTrace();
    }
    ExtendedMetadataDelegate metaDataDelegate = 
        new ExtendedMetadataDelegate(metadataProvider, new ExtendedMetadata());
    return metaDataDelegate;
}

@Bean(name="spMetadata")
public ExtendedMetadataDelegate spMetaData(){
    FilesystemMetadataProvider metadataProvider = null;
    try {
        metadataProvider = new FilesystemMetadataProvider(spMetadataFile);
        metadataProvider.setParserPool(parserPool());
    }
    catch (MetadataProviderException e) {
        e.printStackTrace();
    }

    ExtendedMetadata extendedMetadata = new ExtendedMetadata();
    extendedMetadata.setLocal(true);
    extendedMetadata.setAlias("defaultAlias");
    extendedMetadata.setSecurityProfile("metaiop");
    extendedMetadata.setSslSecurityProfile("pkix");
    extendedMetadata.setRequireArtifactResolveSigned(true);
    extendedMetadata.setRequireLogoutRequestSigned(true);
    extendedMetadata.setRequireLogoutResponseSigned(false);
    extendedMetadata.setIdpDiscoveryEnabled(false);

    ExtendedMetadataDelegate metaDataDelegate = 
        new ExtendedMetadataDelegate(metadataProvider, extendedMetadata);
    return metaDataDelegate;
}

我的问题是我无法在此处获取文件内容。和spMetadataFileidpMetadataFile空。如果存储在项目的类路径中,我不确定如何注入或获取旧的这些文件。

请帮忙。

4

1 回答 1

0

这段代码在我自己的 SP 实现上运行良好:

@Bean
@Qualifier("yourMetadataProvider")
public ExtendedMetadataDelegate yourMetadataProvider()
        throws MetadataProviderException, IOException {
    String path = "<metadata_path>";
    FilesystemMetadataProvider filesystemMetadataProvider = new FilesystemMetadataProvider(
            new File(path));
    filesystemMetadataProvider.setParserPool(parserPool());
    ExtendedMetadataDelegate emd = new ExtendedMetadataDelegate(
            filesystemMetadataProvider, new ExtendedMetadata());

    // Your config
    emd.setLocal(true);
    emd.setAlias("defaultAlias");
    emd.setSecurityProfile("metaiop");
    emd.setSslSecurityProfile("pkix");
    emd.setRequireArtifactResolveSigned(true);
    emd.setRequireLogoutRequestSigned(true);
    emd.setRequireLogoutResponseSigned(false);
    emd.setIdpDiscoveryEnabled(false);

    return emd;
}

设置元数据文件的路径时要小心。

于 2014-07-17T13:34:04.897 回答