itfoxtec-identity-saml2:咨询断言加密算法的设置方法
SAML断言加密算法设置方案
可以设置SAML断言的加密算法,多数主流SAML开发库都支持该配置,只是配置项可能不在你最初查看的顶层配置对象中,以下是具体的实现思路和示例:
按使用的SAML库调整配置
不同库的配置方式存在差异,举几个常见库的实现示例:
- OpenSAML(Java)
需要通过EncryptionConfiguration对象指定数据加密和密钥加密算法,再关联到断言生成逻辑:EncryptionConfiguration encConfig = new EncryptionConfiguration(); // 设置断言内容的加密算法 encConfig.setDataEncryptionAlgorithm("http://www.w3.org/2001/04/xmlenc#aes256-cbc"); // 设置密钥的加密算法 encConfig.setKeyEncryptionAlgorithm("http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"); // 将加密配置绑定到断言生成器 AssertionGenerator assertionGenerator = new AssertionGenerator(); assertionGenerator.setEncryptionConfiguration(encConfig); - OneLogin SAML Toolkit(Python)
在调用加密断言的方法时,直接通过参数指定算法:from onelogin.saml2.utils import OneLogin_Saml2_Utils # 加密断言,传入指定的加密算法参数 encrypted_assertion = OneLogin_Saml2_Utils.encrypt_assertion( assertion_xml_content, sp_public_cert, data_encryption_algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc", key_encryption_algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" )
检查配置对象的嵌套属性
很多情况下,加密算法配置不会放在顶层配置对象,而是嵌套在security或encryption子节点下。比如部分基于XML配置的SAML库,配置结构类似:
<samlConfig> <securitySettings> <encryption> <dataEncryptionAlgorithm>http://www.w3.org/2001/04/xmlenc#aes256-cbc</dataEncryptionAlgorithm> <keyEncryptionAlgorithm>http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p</keyEncryptionAlgorithm> </encryption> </securitySettings> </samlConfig>
算法兼容性注意事项
指定的加密算法必须与服务提供者(SP)支持的算法匹配,常用的合规算法包括:
- 数据加密:
http://www.w3.org/2001/04/xmlenc#aes256-cbc、http://www.w3.org/2001/04/xmlenc#aes128-cbc - 密钥加密:
http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p、http://www.w3.org/2000/09/xmldsig#rsa-sha1(后者兼容性高但安全性较低,建议优先使用前者)
内容的提问来源于stack exchange,提问作者mohamed samy
相关产品推荐
相关产品推荐

