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

IdentityServer4场景下WebApi发起OIDC配置及JWKS请求的作用咨询

关于WebApi发起OpenID配置请求的疑问解答

嘿,这个问题我刚好熟!让我给你拆解一下这两个请求到底在干啥:

首先,你的WebApi用了AddJwtBearer中间件处理JWT认证,当它第一次遇到带[Authorize]特性的接口请求时,就会自动发起这两个请求——本质是为了验证你传入的access token的合法性,总不能随便拿个token就放通行对吧?

1. GET /.well-known/openid-configuration/ 请求的作用

这个请求是去获取OpenID Connect发现文档,里面包含了IdentityServer的核心元数据信息,对WebApi来说最关键的内容有这些:

  • 令牌签发者(issuer)的官方地址:用来验证access token里的iss声明是否和配置的Authority一致,防止伪造的token
  • 支持的JWT签名算法:明确要用哪种算法去验证token的签名
  • JWKS端点的地址:也就是你看到的第二个请求的地址,WebApi会从这个发现文档里拿到该地址,再去请求公钥
  • 其他标准端点地址(如令牌端点、用户信息端点等,不过验证JWT时主要用到前面几项)

2. GET /.well-known/openid-configuration/jwks 请求的作用

这个请求是去获取JSON Web Key Set(JWKS),简单说就是IdentityServer用来签名JWT的公钥集合。
你的access token是IdentityServer用私钥签名的,WebApi没有私钥,只能用对应的公钥来验证签名的有效性——确保token确实是由你配置的合法IdentityServer签发的,而且中途没有被篡改过。

补充说明

从你的WebApi配置里也能找到依据:

.AddJwtBearer("Bearer", options => {
    options.Authority = "<is4-url>";
    options.RequireHttpsMetadata = false;
    options.Audience = "Api1";
});

options.Authority就是告诉JwtBearer中间件:“去这个地址找验证token需要的配置和密钥”。而且这些信息会被中间件缓存起来,不会每次请求都重复发起这两个请求,只有缓存过期或者IdentityServer的密钥更新时才会重新请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:56:57