我们如何在 Metadata Manager 中为同一个 IdP 支持两个元数据提供者?

How can we support two metadata providers for the same IdP in the Metadata Manager?

我们有一个应用程序正在激活为服务提供商。我们允许客户在我们的系统中配置他们的 IdP 元数据字段或上传元数据文件。当两个客户尝试在我们的系统中配置相同的 IdP 元数据时,我们遇到了一个问题,因为 CachingMetadataManager 将在缓存映射键(IdP 实体 ID)上发生冲突。

支持此要求的最佳方式是什么,因为我们正在准备客户 1 将 IdP 元数据添加到我们的系统以用于 IdP X(例如 SSO 圈),然后客户 2 添加稍微不同的(无论是什么)原因)IdP 元数据到我们的系统以获取相同的 IdP X。

我们意识到 IdP 元数据对于两个客户通常应该完全相同,但在某些情况下它们不同,Spring 安全 SAML 库是否以某种方式支持这一点?

谢谢

您可以在 CachingMetadataManager 中添加任意数量的 IDP,但在 IDP.xml 中,entityID 值必须是唯一的。因此,根据您的要求保持 IDP.xml 相同,并根据需要进行更改并将 entityID 更新为唯一值

Spring SAML 不支持多次导入具有相同实体 ID 的元数据(它仅部分支持多租户)。此类用例需要自定义 Spring SAML 库。

将元数据的实体 ID 更改为唯一值会破坏单点登录期间执行的检查 - 该值必须与 IDP 在发出 SAML 断言时使用的值相同。

如果您需要帮助实施此类解决方案,请随时联系 Spring SAML 的商业支持。

请参考我在此处发布的解决方案 - 只需为每个 IdP 的元数据保持唯一的 entityIds

Spring SAML extension for multiple IDP'S