如何确保具有嵌入式 X509 证书的 SAML 断言的身份提供程序是合法的?



我正在尝试实现SAML服务提供商,以便允许对基于云的应用程序进行SSO,该应用程序可以托管多个租户或公司。通常,用户输入一个电子邮件地址(用作其用户ID(和登录密码(租户将由URL参数标识(。

收到的SAML断言在有效负载中嵌入了X509证书,该证书用于验证SAML的签名。虽然签名可以用来验证断言是有效的,但存在的问题是,身份提供者之外的其他人可以生成他们自己的公钥/私钥,用正确的";猜测";有效的租户ID和用户电子邮件地址,然后可能获得对应用程序的访问权限。

除了SAML有效载荷中包含的信息之外,还有什么机制或技术用于识别断言及其嵌入证书来自特定的身份提供者?虽然我读到证书可以从身份提供商下载,但人们担心这些证书会过期或被吊销,此外,我们还必须将它们存储在我们这边。有一种合理的担忧是,这些场景会导致用户停机。

另一个小问题是,当我们需要租户ID来确定哪个租户在特定用户帐户上签名时,通过URI提供该标识符(例如在URL路径中(或作为接收SAML断言的端点上的参数是否常见(或正确(?

SAML Trust

当您实现SAML SP时,您将被要求预先配置目标SAML IdP的签名证书。因此,SP将只信任使用该特定签名证书签名的任何传入断言。

SAML配置

SAML SP的配置可以通过手动设置包括签名证书在内的所有IdP参数来完成,也可以通过指定包含包括签名证书的所有IdP参数的元数据文件来完成。

您可以从IdP下载元数据文件并在您的SAML SP中本地使用它,或者指定元数据文件的URL并让您的SAML SP下载并使用它。

您可以参考Azure AD的SAML元数据URL作为示例:https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml

显然,这个URL应该是TLS/SSL保护的,它的内容只能由IdP修改。

SAML签名证书轮换

轮换签名证书时,IdP和SP之间的信任将丢失。您需要重新配置SP以直接信任新证书或刷新元数据文件。

如果您选择通过指定IdP元数据URL来配置SAML SP,则可以考虑将SAML SP库配置为定期从IdP下载和刷新元数据。

这样,即使证书可能已更改,您的SAML SP也将有一种可信的方式来验证最新的签名证书。

最新更新