签署SAML响应时,我也应该签名断言:
A)生成没有Assertion签名的Response签名。然后在生成两个签名后注入Assertion签名。
B)生成断言签名并在生成响应签名时包含它。
C)其他的东西。?。
〜提前致谢!
答案 0 :(得分:40)
SAML很糟糕,每次我读回答时他们几乎都是正确的,这里是正确的算法:
多数民众赞成。 SAML非常糟糕。有许多细微之处使得实现SAML成为一场噩梦(比如计算XML子集的规范形式(断言),也不包括XML文档的XML版本。
我完成了我的实施,我希望永远不要再次重访这样的痛苦。
答案 1 :(得分:7)
我相信正确答案是B)。首先对Assertion进行签名,然后对包含已签名的Assertion数据的Response进行签名。但是,如果单个发行人/实体(STS / IDP /等)签署两者,那么没有真正的理由签署断言吗?只需签署协议消息/响应,其中应包括断言数据。这将减少SP的处理要求。对于Web SSO,当您有一个不同的实体签署Assertion和Response时,我只见过这两个部分。 - 伊恩
答案 2 :(得分:6)
如果你要同时签名,那么必须首先签署断言,然后是响应,因为响应签名将基于响应的全部内容(包括断言签名)。因此,签署第二个断言会使响应签名无效。
答案 3 :(得分:0)
正确的答案是B。
如果断言方使用A签署SAML响应,则依赖方必须在验证SAML响应之前删除SAML响应的签名和SAML断言的签名。 SAML核心规范表明,除了包络签名变换或独占规范化变换之外,不得使用变换生成签名。这两个转换中没有一个可以删除SAML断言的签名。因此,依赖方无法验证SAML响应。