SAML 断言可以在传输过程中修改吗?

Can SAML Assertions Be Modified In Transit?

有什么可以阻止用户修改发送给服务提供商的 SAML 断言吗?

例如,如果 SAML 响应通过电子邮件地址向服务提供商标识用户,断言中是否有任何内容可以阻止某人使用 Fiddler 之类的东西修改它,并将他们的电子邮件地址替换为在他们尝试访问的服务中具有更高级别访问权限的同一家公司?

SAML 响应中的断言应该使用 private/public 密钥对和 xmldsig 进行签名。如果它们被正确签名,更改断言的内容将使签名无效,从而使断言本身无效。

现在,如果

  • 服务提供商不需要签名,
  • 或者懒得检查签名的有效性,
  • 或者私钥被泄露

那么一切皆有可能。

是的,它可以被修改,但即使是响应中的微小变化(如添加 space)也会导致服务提供商端的签名验证过程失败(前提是 SP 正在按应有的方式验证它完成)