我有一个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());
答案 0 :(得分:0)
为了符合要求,(如果我正确阅读规范),您需要验证两个签名。我相信SAML 2.0 Profiles文档说,在处理SAMLResponse时,SP必须“验证任何存在的签名”。请参见SAML 2.0 Profiles doc中的第4.1.4.3节“消息处理规则”。