Opensaml断言签名验证



我有一个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());

为了兼容,(如果我没看错规范的话)您确实需要验证两个签名。我相信SAML 2.0 Profiles文档说过,在处理SAMLResponse时,SP必须"验证存在的任何签名"。参见SAML 2.0配置文件文档中的4.1.4.3消息处理规则。

最新更新