如何验证滚动证书?

How to verify a rollover certificate?

我想验证来自 SAML 断言的证书(由 AZURE AD 颁发)

他们可以随时翻转 public 键。我假设这意味着我无法在受信任的根存储中手动管理它们。

我正在使用 X509Certificate2.Verify(),如果证书不在受信任的根存储中,它会返回 False。如果受信任,我应该使用 X509Certificate2.Build() 并将其设置为忽略吗?

SAML2 使用证书作为一种使用标准文件格式表示 encryption/signing 密钥的便捷方式。证书的内容不相关,因为证书应该在相关方之间直接交换。所以不需要验证证书的有效性,在许多部署中它甚至不会验证。

对于定期执行密钥滚动更新的 Idp,您应该加载并信任 Idp 的元数据,而不是直接配置证书。

如果您要自己实现所有这些,我建议您花一些时间寻找现有的实现。制作支持加载元数据的完整 SAML2 实现非常重要,需要花费大量时间。