SAML 元数据协商过程
SAML metadata negotiation process
我是服务提供商 (SP),希望通过 Web SSO 配置文件支持多个身份提供商 (IdP)。
我很难理解我应该如何与身份提供商管理员协商 SAML 功能(例如 signing/not 签署 AuthnRequests)。
这是我目前的理解:
- 我创建了一个 sp-metadata.xml,我将其公开给所有想要与我集成的 IdP。
- 为了与我集成,IdP 管理员通过我的网络界面上传他们的 idp-metadata.xml。我根据我的 sp-metadata.xml 验证了它。如果他们的元数据功能与我的元数据功能不匹配,我会在上传时向他们显示详细的错误信息,以便他们更改设置。
问题:
- 这是一种有效且通用的方法吗?
- 如何编写 SP 元数据以支持所有或大多数开箱即用的 IdP?例如,我应该输入 "AuthnRequestsSigned = false" 还是 "AuthnRequestsSigned = true"? Web SSO Profile 似乎并没有对此给出严格的指导。
关于 2:您无法真正根据 SP 元数据验证 IdP 元数据。大多数 IdP 不会告知他们是否接受数字签名的 SAML AuthnRequest。他们通常也不会说明他们支持哪种签名算法或密钥大小。
一些 IdP 实现甚至不创建符合 SAML 元数据模式的元数据文件。
如果您关心安全性,那么您应该对 SAML AuthnRequest 进行数字签名,并要求 IdP 忽略该签名以防您的 SP 发送它。
另请注意,一段时间以来对规范进行了一些更新...请参阅新的处理规则。
备选方案:在上传过程中询问(checkbox/radio 按钮)他们是否可以处理数字签名的 SAML AuthnRequest 以及必须使用哪种签名算法。
即如果 Microsoft ADFS 和 Azure AD 无法处理 SAML AuthnRequest,则会通过 non-descriptive SAML 错误响应来解决问题。
我是服务提供商 (SP),希望通过 Web SSO 配置文件支持多个身份提供商 (IdP)。
我很难理解我应该如何与身份提供商管理员协商 SAML 功能(例如 signing/not 签署 AuthnRequests)。
这是我目前的理解:
- 我创建了一个 sp-metadata.xml,我将其公开给所有想要与我集成的 IdP。
- 为了与我集成,IdP 管理员通过我的网络界面上传他们的 idp-metadata.xml。我根据我的 sp-metadata.xml 验证了它。如果他们的元数据功能与我的元数据功能不匹配,我会在上传时向他们显示详细的错误信息,以便他们更改设置。
问题:
- 这是一种有效且通用的方法吗?
- 如何编写 SP 元数据以支持所有或大多数开箱即用的 IdP?例如,我应该输入 "AuthnRequestsSigned = false" 还是 "AuthnRequestsSigned = true"? Web SSO Profile 似乎并没有对此给出严格的指导。
关于 2:您无法真正根据 SP 元数据验证 IdP 元数据。大多数 IdP 不会告知他们是否接受数字签名的 SAML AuthnRequest。他们通常也不会说明他们支持哪种签名算法或密钥大小。
一些 IdP 实现甚至不创建符合 SAML 元数据模式的元数据文件。
如果您关心安全性,那么您应该对 SAML AuthnRequest 进行数字签名,并要求 IdP 忽略该签名以防您的 SP 发送它。
另请注意,一段时间以来对规范进行了一些更新...请参阅新的处理规则。
备选方案:在上传过程中询问(checkbox/radio 按钮)他们是否可以处理数字签名的 SAML AuthnRequest 以及必须使用哪种签名算法。
即如果 Microsoft ADFS 和 Azure AD 无法处理 SAML AuthnRequest,则会通过 non-descriptive SAML 错误响应来解决问题。