You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SimpleSAML Unable to validate Signature报错原因咨询

问题根因

该集中故障是2022年6月Azure AD SAML签名密钥全局滚动流程疏漏导致,与你侧单站点配置、证书过期、租户独立配置无关,核心触发逻辑如下:

  • 微软当时在全球范围分批次对所有Azure AD租户切换SAML响应签名用的根证书,所有对接Azure AD SAML能力的租户无论实例是否独立,都会在所属批次的切换时间点触发密钥变更,这就是7个独立站点集中出问题的核心原因
  • 你配置的每日自动元数据刷新cron没有提前拦截故障,是因为微软本次密钥滚动违反了SAML协议的常规约定:按标准流程新签名公钥需要提前30天写入公开元数据端点,供对接方提前缓存兼容,但本次新密钥直到切换动作执行的瞬间才被更新到元数据中,切换前所有自动刷新任务拉到的元数据都只包含旧公钥,切换瞬间就会触发签名校验失败
  • 手动刷新元数据即可恢复的现象也能佐证这个根因:手动刷新时密钥切换已经完成,拉到的最新元数据包含了新公钥,替换本地缓存的旧公钥后验签逻辑自然恢复正常
  • 你没查到官方公告是因为该事件最初没有被微软判定为全局故障,后续才在Azure AD服务健康历史记录中补登,说明故障诱因是微软侧密钥滚动流程的配置错误,不是你侧操作问题。

验证方法

你可以通过以下信息交叉确认根因:

  • 导出故障时段站点收到的SAML响应,提取签名使用的公钥指纹,和故障发生时本地缓存的元数据内公钥指纹做比对,二者必然不匹配;该指纹和手动刷新元数据后拉取到的新公钥指纹完全一致
  • 7个站点的故障时间点,和你司服务所在区域的Azure AD密钥滚动批次时间完全吻合,时间偏差不会超过2小时
  • 查看cron任务的历史拉取记录,故障前最后一次拉取的元数据仅包含1个签名公钥条目,故障后手动拉取的元数据会新增1个签名公钥条目。

规避方案

后续避免同类故障的可落地操作:

  • 将元数据自动刷新频率从每日1次调整为每6小时1次,本地元数据缓存TTL不要设置超过12小时
  • 给SimpleSAML开启多签名密钥兼容逻辑,SAML响应签名只要能被元数据内任意一个处于有效期的公钥校验通过即可放行,不要强绑定单个公钥
  • 新增元数据变更告警,一旦检测到拉取的元数据内公钥、实体ID、登录端点等核心字段发生变化,立刻触发通知,不用等终端用户报障再处理。

故障对应报错样例:

SimpleSAML\Error\Error: UNHANDLEDEXCEPTION
Caused by: Exception: Unable to validate Signature

内容的提问来源于stack exchange,提问作者Rovsing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 00:03:20