我已经实现了一个 spring saml 元数据提供程序,它从数据库读取数据并为我的服务提供程序和身份提供程序提供服务。我还利用别名作为租户标识符。
我的问题是,如果我进入数据库并将特定身份提供者的元数据修改为不同的,那么在我重新启动 spring saml 扩展之前,它似乎没有任何效果。这与我是否等待 MetadataManager 重新加载线程启动无关。
这里缓存了什么?我可以阻止这种行为吗?
看起来 SAML 消息验证代码中正在缓存某些内容。如果我使用无效元数据启动进程,然后更正元数据,则无论发生什么情况,我都会收到“身份验证失败:传入 SAML 消息无效”的消息。
如有任何帮助,我们将不胜感激。
编辑:我相信我找到了发生这种情况的位置:在 MetadataCredentialResolver.java 中,凭证在从元数据提供程序检索凭证后通过调用 cacheCredentials 进行缓存。
最佳答案
我能够通过重写 MetadataCredentialResolver 并使 cacheCredentials 成为无操作来解决此问题。
关于spring - 如何强制 Spring SAML 重新读取我的 IDP 元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38081242/