如何解决AuthnResponseSignType默认配置下认证响应未签名问题
问题判断结论
你的判断是正确的,你提到的对应代码行的运算符使用不符合该配置项的设计预期。
按照Saml2AuthnResponseSignTypes枚举的设计语义:
SignResponse应仅对SAML响应整体进行签名SignAssertion应仅对断言部分进行签名SignAssertionAndResponse应对两者同时签名
你提到的代码行使用!=判断时,仅当配置为SignAssertionAndResponse时才会触发响应签名逻辑,直接导致SignResponse配置无效,和你观测到的现象完全吻合。
可能遗漏的配置校验点
你可以做以下两点确认排除其他配置问题:
- 确认全局
SigningCertificate配置是否正确:你配置SignAssertionAndResponse时功能正常,说明证书配置无问题,该点可以直接排除 - 确认你使用的库版本:你提到的对应commit版本确实存在该逻辑问题,其他版本是否存在该问题需要对照对应版本的源码判断
解决方案建议
- 优先使用
AuthnResponseSignType = Saml2AuthnResponseSignTypes.SignAssertionAndResponse配置,该配置既可以规避当前逻辑问题,同时符合SAML2协议的更高安全要求,跨IDP/SP兼容性更好 - 若业务要求必须仅签名响应,可以自行修改源码将对应行的
!=运算符替换为==,或升级到已修复该问题的库版本
内容的提问来源于stack exchange,提问作者Jesse Sierks
相关产品推荐
相关产品推荐

