【问题标题】:FilesystemMetadataProvider: get metadata fileFilesystemMetadataProvider:获取元数据文件
【发布时间】:2015-02-16 22:26:58
【问题描述】:

在我们的多租户环境中,我们不能在 spring 文件中配置我们的MetadataProvider,并且必须在运行时创建/检索/等它们。我基本上是在尝试坚持MetadataProvider,以便我可以在应用程序重新启动时重新加载它们。对于HttpMetadataProvider,我可以从getMetadataURI() 方法中获取URL。但是,我看不到从FilesystemMetadataProvider 获取位置的方法。有没有办法,否则,我将不得不诉诸反思。

【问题讨论】:

    标签: spring-security spring-saml


    【解决方案1】:

    您可以使用以下签名扩展FilesystemMetadataProvider 类并覆盖方法getMetadataIdentifier,以使其公开:

     public String getMetadataIdentifier() {
         return super.getMetadataIdentifier();
     }
    

    该方法返回元数据文件的绝对路径。然后在定义您的元数据时,您可以使用新的类并根据需要获取文件名,而不是使用原始类。

    【讨论】:

    • 谢谢@vladimir。尽管您的解决方案比反射更容易实现,但它也存在同样的问题:代码变得脆弱,因为它不是公共访问器。 FilesystemMetadataProvider.getMetadataIdentifier() 不公开而 HttpMetadataProvider.getMetadataURI() 公开有什么原因吗?再次感谢您的回复以及开发和维护扩展。
    • 这些类来自 OpenSAML,不是我维护的,所以我不知道做出这些选择的最初原因是什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 2018-09-15
    相关资源
    最近更新 更多