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

Identity Server 4与3之间的安全令牌验证问题求助

解决IdentityServer4与IdentityServer3 WebForms客户端的签名验证异常问题

我帮你拆解下这个问题:你遇到的SecurityTokenSignatureKeyNotFoundException核心原因是IdentityServer3(IdS3)客户端找不到对应的密钥来验证IdentityServer4(IdS4)签发的JWT签名。你已经在IdS4端配置了自定义签名证书,但IdS3端还没配置信任这个证书,所以导致验证失败。

下面给你两种可行的解决方案,按推荐程度排序:


方案1:通过OIDC发现端点自动获取验证密钥(推荐)

IdS4支持标准的OIDC发现端点,IdS3可以通过这个端点自动拉取IdS4的签名密钥,不需要手动维护证书,适合后续证书轮换的场景。

在你的IdS3 WebForms客户端配置中,修改IdentityServer客户端的验证配置:

var clientOptions = new IdentityServer3.Core.Configuration.ClientOptions
{
    // 保留你已有的客户端配置(比如ClientId、RedirectUri等)
    ClientId = "webforms",
    RedirectUri = "你的回调地址",
    // 新增以下配置
    ValidationMode = ValidationMode.ValidationEndpoint,
    Authority = "http://localhost:5000", // 你的IdS4服务器地址
    DiscoveryEndpointUrl = "http://localhost:5000/.well-known/openid-configuration" // IdS4的发现端点
};

这样IdS3会自动从IdS4的发现端点获取最新的签名密钥,完成JWT签名验证。


方案2:手动加载IdS4的签名证书到IdS3客户端

如果你更倾向于手动管理证书,可以直接把IdS4使用的签名证书加载到IdS3的验证配置中。

在IdS3客户端的配置代码里添加:

// 加载IdS4使用的签名证书(和你在IdS4中用的是同一个)
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var signingCert = store.Certificates.Find(X509FindType.FindBySerialNumber, "3506fe4f69dc22b340e9c2af500d4659", false)[0];
store.Close();

// 配置IdS3客户端的验证参数
var clientOptions = new IdentityServer3.Core.Configuration.ClientOptions
{
    // 保留你已有的客户端配置
    ClientId = "webforms",
    RedirectUri = "你的回调地址",
    // 配置验证模式和信任的证书/ issuer
    ValidationMode = ValidationMode.Local,
    ValidIssuers = new List<string> { "http://localhost:5000" }, // 必须和IdS4的iss声明一致
    SigningCertificates = new List<X509Certificate2> { signingCert } // 添加IdS4的签名证书
};

额外注意事项

  • 确保IdS4的iss声明(报错里是http://localhost:5000)和IdS3配置的ValidIssuers完全一致,大小写、末尾斜杠都要匹配。
  • 检查IdS3客户端的ClientId是否和JWT中的aud声明(报错里是webforms)一致。
  • 如果用方案2,要确保IdS4的签名证书已经安装在IdS3客户端机器的LocalMachine\My证书存储中,并且运行IdS3应用的账号有读取该证书的权限。

内容的提问来源于stack exchange,提问作者Chas Rayner Rose

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:44:59