Entra(Azure) SAML注销请求(DEFLATE编码)签名验证失败排查求助
SAML 2.0 SSO应用:Azure AD注销请求签名验证失败
问题详情
我们开发的SAML 2.0 SSO应用,在处理https://login.microsoftonline.com/发来的注销请求时,始终出现签名验证失败。该请求没有嵌入式签名,是对DEFLATE编码后的RL参数进行签名的。
已知有效信息
- 用于验证的Azure证书/公钥:在登录响应的签名验证中完全有效,排除公钥本身无效的可能
- 请求特征:无嵌入式签名,签名对象为DEFLATE编码的RL参数
请求样本
[请在此处粘贴完整的注销请求样本]
执行的验证步骤(遵循SAML 2.0规范,Linux控制台OpenSSL)
- 提取RL参数的Base64编码值,先Base64解码再执行DEFLATE解压:
echo "<RL参数的Base64值>" | base64 -d | zlib-flate -uncompress > decoded_rl.txt - 提取请求中的签名部分,保存为
signature.bin - 用OpenSSL执行签名验证:
openssl dgst -sha256 -verify azure_public_key.pem -signature signature.bin decoded_rl.txt
失败结果
[请在此处粘贴OpenSSL返回的具体失败输出,例如:
Verification Failure或更详细的错误信息]
需要排查的方向
希望能帮忙分析可能的原因:
- DEFLATE解压的处理是否符合SAML 2.0规范?有没有可能Azure的DEFLATE编码和标准实现有差异?
- Azure AD的注销请求签名逻辑,和登录响应的签名逻辑是否存在不同?比如哈希算法、签名范围的差异
- OpenSSL的验证命令是否有参数错误?比如是否应该指定其他哈希算法,或者待验证数据的处理有遗漏?
内容的提问来源于stack exchange,提问作者vitalis
相关产品推荐
相关产品推荐

