在更高级别,SAML是一种登录用户的方法,它使用两个系统之间的浏览器内部通信。 不使用的话,不能相互通信。 如果用户想登录到自己喜欢的SaaS,则SaaS应用程序(SP或服务提供商)会将有关登录请求的数据发送到IDP。 其中包括唯一的请求ID和数据等内容,如您正在访问的原始页面。 理论上,认证请求可以指定IDP返回的用户名和名称等字段类型,但实际上将被忽略。 这些请求也可以签名,但实际上SP旋转密钥通常会中断问题。 在任何现代系统中,SAML交换都是通过TLS进行的,所以安全性几乎没有好处。
攻击SAML的方法有很多! 独特的签名密钥可以解决其中的一些问题,但这不是万能的。
参与者限制问题(Audience restriction issue )
这是我在这篇文章中关注的问题,以后再详细讨论。 令人意外的是,唯一的签名密钥解决了这样的问题。
失窃IDP签名密钥:确实,任何有权访问IDP的人都可以获得签名密钥的副本,并登录到任何与自己集成的网站。 如果这是你感兴趣的威胁,只提供签名预言的硬件支持的关键是正确的防御措施。

XML和XML安全库:如果可能,必须使用内存安全库。 也就是说,它实际上不影响第三方断言验证。 此外,使用唯一的签名密钥不会改变安全性状态。
XML安全性是本世纪初出现的内联签名格式,当时没有人提出要求,需要它的人也很少。 但是,越来越多的人会忽略用户名中的XML注释,忽略签名格式本身影响XML解析器的注释,以及不检查验证的签名是否真的复盖了所有可信数据。
使用唯一的签名密钥可以减少这些问题的影响范围。 用户不能登录到集成的服务(是否授权),而应该只关心单个应用程序的内部权限。