我想验证小响应的签名。目前,我可以使用OpenSAML从断言中获得签名变量的值。但是,如何获得publickey和publicCredential?
try {
BasicX509Credential publicCredential = new BasicX509Credential();
publicCredential.setPublicKey(publicKey);
SignatureValidator signatureValidator = new SignatureValidator(publicCredential);
signatureValidator.validate(signature);
} catch (ValidationException e) {
e.printStackTrace();
// throw new InvalidAssertionException("Assertion signature validation failed.");
}
两种方式:
- 从IdP元数据中获取公钥资料。
- 从SAML Response获取公钥材料(如果有)。
但理想情况下,您应该从IdP和SP之间建立信任期间收到的IdP元数据中获取公钥材料。这是因为信任是在配置时在IdP和SP之间建立的,而不是在运行时从IdP接收SAML响应时建立的。