1

我有一个 SAML 2 响应,其中包含一个已签名的断言,并且响应本身已再次签名。我使用下面的代码来验证响应的签名配置文件。

SAMLSignatureProfileValidator signatureProfileValidator = new SAMLSignatureProfileValidator();
signatureProfileValidator.validate(response.getSignature());

并在代码块下方验证签名。

SignatureValidator signatureValidator = new SignatureValidator(validatingCredential);
signatureValidator.validate(response.getSignature());

但我相信这些东西只验证响应签名和响应签名配置文件。我还需要验证断言签名吗?我尝试使用下面的代码块验证断言签名。但它给了我 ValidationException 这意味着它无效。但它应该是。

SignatureValidator signatureValidator = new SignatureValidator(validatingCredential);
signatureValidator.validate(assertion.getSignature());
4

1 回答 1

0

为了符合要求,(如果我正确阅读了规范)您确实需要验证两个签名。我相信 SAML 2.0 Profiles 文档说在处理 SAMLResponse 时,SP 必须“验证存在的任何签名”。请参阅SAML 2.0 配置文件文档中的第 4.1.4.3 节消息处理规则。

于 2014-08-13T15:29:24.753 回答