我如何才能完全信任 SAML IDP?

How can I fully trust a SAML IDP?

我的 Web 应用程序允许通过 SAML 身份验证进行 SSO,我现在正在进行开发。这个想法是,这会绕过我的应用程序的本地身份验证,并且用户在使用 SAML IDP 进行身份验证后会自动进行身份验证。我们将从供应商那里获得 X502 证书,因此他们在一定程度上受到信任。

在来自 SAML 身份验证的 return 上的应用程序中,我从 IDP 获取一封电子邮件作为标识符,并使用它来加载用户的会话。但这显然很危险,因为 IDP 可能会欺骗来自另一家公司的电子邮件。我能做些什么来保护它?

In my application on return from SAML auth I take an email as identifier from the IDP and use that to load the user's session. But this is clearly dangerous as the IDP could spoof the email, from another company even.

没有。不是,除非您采用不安全的集成方法。

SAML2 IDP 和您的 SP 通过共享 SAML2 元数据建立相互信任,无论是作为物理文件、URL 上的有效负载等。您的 SP 将仅通过元数据与其信任的 IDP 通信,元数据的有效性可以也可以使用适当的密钥进行验证。此外,可以对 IDP 发出的响应进行签名和加密,理论上只有为其发出响应的 SP 才能验证响应的完整性和真实性,并可选择对其进行解密以获取适当的数据。如果您的 SP 盲目信任来自任何 SAML2 IDP 的数据,那么是的,这很危险,但这是您的设置问题,而不是“IDP 欺骗”电子邮件地址。

What can I do to secure this?

确保 IDP 为您签署适当的 responses/assertions,并且您的 SP 正确验证响应,包括其签名。如果您担心数据可见性,可以要求 IDP 为您加密 response/attributes/nameIDs。归根结底,如果所有这一切都过去了,您将信任 IDP 将您正确和信任地收到的数据。如果 IDP 向您发送了一个“无效”的电子邮件地址,即使在验证了所有内容之后,这也是 IDP 需要解决的问题,而不是“不安全”。