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

.NET Core 2.2下Identity Server 4重定向失效问题求助

修复Identity Server 4在ASP.NET Core 2.2中JWKS端点Content-Type不兼容问题

我之前也碰到过一模一样的问题!根源在于ASP.NET Core 2.2版本的Identity Server 4开始严格遵循RFC 7517标准,把JWKS(JSON Web Key Set)端点的响应Content-Type设置为application/jwk-set+json,但你用的Angular OAuth客户端库(比如旧版的angular-oauth2-oidc)可能只预期接收application/json,导致解析失败,直接卡住了登出后的密钥发现流程。

这里有两种可行的修复方案,你可以根据项目情况选:

方案一:临时修改Identity Server的JWKS响应头(快速解决)

通过添加自定义中间件,拦截JWKS端点的响应并强制修改Content-Type为客户端预期的类型:

  1. 打开Identity Server项目的Startup.cs文件
  2. 在Configure方法里,放在app.UseIdentityServer()之后添加这段代码:
app.Use(async (context, next) =>
{
    await next();
    // 匹配JWKS端点的路径
    if (context.Request.Path.Equals("/.well-known/openid-configuration/jwks", StringComparison.OrdinalIgnoreCase))
    {
        // 强制将Content-Type改为application/json
        context.Response.ContentType = "application/json";
    }
});
  1. 重启Identity Server,用Fiddler或Chrome开发者工具验证JWKS端点的响应头,确认Content-Type已经变成application/json后,再测试登出流程是否恢复正常。

方案二:升级Angular OAuth客户端库(长期标准方案)

application/jwk-set+json其实是JWKS的官方标准Content-Type,旧版本的客户端库只是没适配这个标准。如果你的项目允许升级依赖,建议直接把Angular OAuth库(比如angular-oauth2-oidc)升到最新稳定版本——新版本已经支持这个标准类型,既能从根源解决兼容性问题,也能避免后续其他潜在的标准适配坑。

验证方法

不管选哪种方案,修复后都可以这么确认:

  • 打开Chrome开发者工具的Network标签
  • 触发登出流程,找到请求/.well-known/openid-configuration/jwks的记录
  • 查看Response Headers里的Content-Type,确认是application/json(方案一),或者客户端库能正常解析application/jwk-set+json(方案二)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:22:38