如何强制 Spring SAML 重新读取我的 IDP 元数据?

How can I force Spring SAML to reread my IDP metadata?

我实现了一个 spring saml 元数据提供程序,它从数据库中读取数据并为我的服务提供程序和身份提供程序提供服务。我还利用别名充当租户标识符。

我的问题是,如果我进入数据库并将特定身份提供者的元数据修改为不同,在我重新启动 spring saml 扩展之前,它似乎没有任何效果。这与我是否等待 MetadataManager 重新加载线程启动无关。

这里缓存了什么?我可以阻止这种行为吗?

SAML 消息验证代码中似乎缓存了一些内容。如果我使用无效的元数据启动进程,然后更正元数据,无论发生什么,我都会得到身份验证失败:传入的 SAML 消息无效。

如有任何帮助,我们将不胜感激。

编辑: 我相信我找到了发生这种情况的位置:在 MetadataCredentialResolver.java 中,在从元数据提供者。

我能够通过覆盖 MetadataCredentialResolver 并使 cacheCredentials 成为空操作来解决这个问题。