根据我在互联网上所做的知识和研究,目前OPENAM似乎不支持SHA-256加密。我在我的项目中使用SAML身份验证,目前使用不支持SHA 256加密的旧openfed jar。我也浏览了最新的jar,发现openam不支持它。 仅供参考.. 以下是QuerySignatureUtil.java的片段:
final String querySigAlg;
final String alg = privateKey.getAlgorithm();
switch (alg) {
case "RSA":
//Defaulting to RSA-SHA1 for the sake of interoperability
querySigAlg = SystemPropertiesManager.get(SAML2Constants.QUERY_SIGNATURE_ALGORITHM_RSA,
XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1);
break;
case "DSA":
//Defaulting to SHA1WithDSA as JDK7 does not support SHA256WithDSA
querySigAlg = SystemPropertiesManager.get(SAML2Constants.QUERY_SIGNATURE_ALGORITHM_DSA,
XMLSignature.ALGO_ID_SIGNATURE_DSA);
break;
case "EC":
querySigAlg = SystemPropertiesManager.get(SAML2Constants.QUERY_SIGNATURE_ALGORITHM_EC,
XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA512);
break;
default:
SAML2Utils.debug.error(classMethod + "Private Key algorithm not supported: " + alg);
throw new SAML2Exception(SAML2Utils.bundle.getString("algorithmNotSupported"));
}
在浏览互联网时,我找到了机票https://bugster.forgerock.org/jira/browse/OPENAM-8627
但它似乎只针对.NET fedlet。
有人可以吗
答案 0 :(得分:0)
首先,SHA-256不是加密算法。
数字签名可以使用SHA256作为摘要算法,是的。正如您在QuerySignatureUtil的源代码中看到的那样,实际的算法现在是可配置的,并且可以占用大量different values。配置检索是通过代码段中的SystemPropertiesManager调用完成的,配置可以来自两个地方:
如果您想查看数字签名实现,那么有两类感兴趣:
如果要控制数字签名中的DigestMethod值,则需要查看在13.5.0中实现的OPENAM-7778。
如果要使用256位加密算法加密SAML消息,则需要安装JCE jurisdiction files,之后,您应该能够将http://www.w3.org/2001/04/xmlenc#aes256-cbc配置为XML加密算法。