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

Azure AD登录异常:会话过期与请求过长错误排查求助

问题排查与解决方案

我来帮你梳理这两个问题——会话过期和「Bad Request - Request Too Long」错误的排查方向和修复方案,结合你的代码和Azure配置来看,主要是这几个环节没做到位:

一、会话过期问题的修复

你的代码里直接用了Response.Redirect跳转,但结合Azure AD的认证流程,这里存在会话同步的漏洞:

  • 缺少Azure AD会话与本地会话的绑定:你只是简单处理了本地会话,但没把Azure AD的认证票据(比如ID Token、会话令牌)和本地会话关联起来。跳转到Home页面时,本地会话还没完成和Azure AD会话的同步,就会被判定为过期。
  • 调整代码逻辑:
    别再用Response.Redirect,建议改用RedirectToAction,同时把Azure AD的认证信息存入本地会话。修改后的代码示例:
    public class Logon : Controller
    {
        [Authorize]
        public ActionResult Authenticate()
        {
            if (User.Identity.IsAuthenticated)
            {
                var userfirstname = User.FindFirst(ClaimTypes.GivenName)?.Value;
                var userlastname = User.FindFirst(ClaimTypes.Surname)?.Value;
                
                // 把Azure AD的ID Token存入本地会话,确保会话同步
                Session["AADIdToken"] = HttpContext.GetTokenAsync("id_token").Result;
                
                // 跳转到Home首页
                return RedirectToAction("Index", "Home");
            }
            return View();
        }
    }
    
  • 检查Azure AD会话配置:在Azure AD应用注册的「会话管理」设置里,确认会话超时时间设置合理,并且开启了「保持用户登录」选项(如果需要长期会话)。

二、「Bad Request - Request Too Long」错误的修复

这个错误基本是请求头或Cookie过大导致的,结合你的场景,主要原因和修复方式如下:

  • Cookie累积超限:Azure AD认证后会生成多个Cookie(比如ASP.NET_SessionId、.AspNetCore.Cookies),如果本地IIS的Cookie大小限制过低,就会触发这个错误。
  • 调整IIS配置:
    1. 打开IIS管理器,找到你的站点,进入「配置编辑器」
    2. 定位到system.webServer/security/requestFiltering,把requestLimits下的maxQueryString和maxUrl值调高(比如设为8192)
    3. 再定位到system.web/httpCookies,开启httpOnlyCookies和requireSSL,同时把maxCookieSize调整到4096左右
  • 补充Azure AD回复URL:你现在把主页URL和回复URL都设成了https://mysite/logon/authenticate,但回复URL需要包含所有可能的回调路径。比如https://mysite/Home/Index如果是跳转后的页面,也得添加到Azure AD的回复URL列表里,避免因路径不匹配导致请求参数异常过长。

三、你遗漏的关键配置点

  • 回复URL完整性:Azure AD应用注册的「回复URL」必须包含所有应用的回调路径,不能只填登录回调页
  • 令牌管理工具:建议用Microsoft.Identity.Web库来处理Azure AD令牌,它会自动搞定会话同步、令牌刷新,不用手动写容易出错的逻辑
  • IIS会话状态匹配:在IIS的「会话状态」设置里,确保会话模式(单服务器用InProc,多服务器用StateServer/SQLServer)和Azure AD的会话超时时间匹配

内容的提问来源于stack exchange,提问作者Jeric John Romero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:36:22