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

Azure AD登录后陷入重定向循环问题求助

解决Azure AD认证后重定向循环问题

嘿,我碰到过好几个类似的Azure AD认证循环问题,帮你梳理几个最可能的原因和解决办法:

1. 先检查Azure AD应用注册的重定向URI

这是踩坑最多的点:

  • 登录Azure门户找到你的应用注册,去身份验证页面,确认重定向URI和你应用的实际回调地址完全匹配,比如https://yourappname.azurewebsites.net/signin-oidc
  • 注意必须是HTTPS(你已经用了,这点没问题),但拼写、大小写绝对不能错,多一个斜杠少一个都可能出问题

2. 优化Cookie认证的配置

你改了SecurePolicy,但还有几个关键设置要调整:

.AddCookie(options => {
    options.Cookie.SecurePolicy = CookieSecurePolicy.Always; // 既然用HTTPS,别用None,Always更安全也更适配Azure环境
    options.Cookie.SameSite = SameSiteMode.Lax; // 这个设置能避免跨站Cookie被拦截,Azure AD回调时特别重要
    options.Cookie.HttpOnly = true;
    // 确保登录路径没冲突,如果用默认OIDC回调,不用额外设LoginPath,但别把[Authorize]加在回调路径上
})

3. 确认OIDC回调路径一致

默认情况下Azure AD的OIDC中间件用/signin-oidc作为回调路径,如果你在Azure AD里配置了自定义路径,一定要在代码里明确指定:

.AddAzureAd(options => {
    Configuration.Bind("AzureAd", options);
    options.CallbackPath = "/your-custom-callback"; // 和Azure AD应用注册里的URI完全一致
})

4. 排查授权规则的冲突

  • 检查你是不是不小心把[Authorize]属性加到了首页或者OIDC的回调路径(比如/signin-oidc)上,这样回调完成后又会触发授权,直接进入循环
  • 可以先临时移除所有[Authorize]测试,能正常登录的话,再逐个加回来找冲突的地方

5. 检查JWT Bearer中间件的干扰

你同时配置了Cookie和JWT两种认证方式,要避免冲突:

  • 如果你的应用是Web页面为主,暂时移除JWT Bearer中间件试试,看循环是否消失
  • 如果有API接口需要JWT,要给API控制器明确指定认证Scheme:[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)],别让它和Cookie认证的默认Scheme混淆

6. 看日志找精准错误

去Azure门户的应用服务里,打开日志流或者查看应用日志,里面会有详细的认证失败细节,比如Cookie写入失败、回调验证不通过等,这能帮你快速定位问题

按上面的步骤逐一排查,应该能解决这个循环问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:22:11