添加Ping Federate memberOf属性引发ERR_HTTP2_PROTOCOL_ERROR的求助
问题根源很明确:添加memberOf属性后,认证Cookie大小超过了浏览器单个Cookie的4KB限制,同时HTTP2协议对响应帧大小的约束也放大了这个问题。以下是几个可行的解决方案:
精简Cookie中的数据
- 只保留应用必需的用户组:在PingOne的属性映射配置里过滤掉无关的内置组、非业务组,或者在.NET端验证Token后,只将业务相关的组保留到认证会话中,剔除冗余数据。
- 移除非必要的用户信息:认证Cookie只存核心身份字段(如用户ID、用户名),其他额外信息通过后端接口按需从PingOne拉取,或者存在内部数据库/缓存里。
用分布式缓存存储会话数据
- 放弃在Cookie里存大量数据,改用分布式缓存(Redis、SQL Server缓存等)存储用户组这类扩展信息。修改认证配置示例:
services.AddAuthentication() .AddOpenIdConnect("PingOne", options => { // 你的PingOne基础配置 options.SaveTokens = false; // 禁止默认将Token存入Cookie options.Events = new OpenIdConnectEvents { OnTokenValidated = async context => { var cache = context.HttpContext.RequestServices.GetRequiredService<IDistributedCache>(); // 提取需要的用户组并存入缓存 var userGroups = context.Principal.Claims .Where(c => c.Type == "memberOf") .Select(c => c.Value) .ToList(); await cache.SetStringAsync( $"UserGroups:{context.Principal.Identity.Name}", JsonSerializer.Serialize(userGroups), new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(8) } ); } }; }) .AddCookie(options => { // Cookie只存会话标识,核心身份数据 options.Cookie.Name = "AppAuthCookie"; }); - 后续业务逻辑中需要用户组时,直接从分布式缓存读取即可。
- 放弃在Cookie里存大量数据,改用分布式缓存(Redis、SQL Server缓存等)存储用户组这类扩展信息。修改认证配置示例:
启用Cookie自动拆分
- 如果必须保留部分数据在Cookie中,可通过ASP.NET Core的
ChunkedCookieHandler将大Cookie拆分成多个小Cookie,绕过单个Cookie的大小限制:services.AddAuthentication() .AddCookie(options => { options.Cookie.Name = "AppAuth"; options.Cookie.MaxSize = 4096; // 单Cookie最大4KB options.SessionStore = new ChunkedCookieHandler(); // 自动拆分 }); - 注意:不同浏览器对单域名Cookie总数有限制(一般50个以内),拆分后要控制总数量。
- 如果必须保留部分数据在Cookie中,可通过ASP.NET Core的
调整HTTP2相关配置
- 临时切换到HTTP1.1测试:在项目调试设置里关闭"使用HTTP2",如果问题消失,说明是HTTP2帧大小限制导致的。此时可尝试在IIS Express的
applicationhost.config中增大HTTP2帧大小:<system.webServer> <httpProtocol> <customHeaders> <add name="Max-Frame-Size" value="32768" /> <!-- 调整为更大的帧大小 --> </customHeaders> </httpProtocol> </system.webServer>
- 临时切换到HTTP1.1测试:在项目调试设置里关闭"使用HTTP2",如果问题消失,说明是HTTP2帧大小限制导致的。此时可尝试在IIS Express的
内容的提问来源于stack exchange,提问作者Patrick95
相关产品推荐
相关产品推荐

