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

Blazor Server Azure AD认证本地正常,部署Azure App Service后无权限访问

问题根因说明

你排查时找不到无权限提示文案,是因为这个错误是Azure App Service层面返回的,未经过你的应用代码渲染,并非你项目内的授权逻辑抛出。该问题90%以上是由两层认证逻辑冲突、云端配置不匹配导致的,和本地环境仅运行应用内单一认证逻辑的运行环境不同。

修复步骤
  • 第一步:关闭Azure App Service内置身份验证
    登录Azure门户,进入对应App Service的「身份验证」菜单,若开启了「应用服务身份验证(Easy Auth)」直接关闭。你的应用已经内置MSAL Azure AD认证逻辑,两层认证叠加会导致Token校验冲突,直接抛出无权限错误。
  • 第二步:检查Azure AD应用注册回调地址
    进入你的Azure AD应用注册配置,在「重定向URI」中新增Azure App Service的正式回调地址:https://<你的应用域名>.azurewebsites.net/signin-oidc,必须使用HTTPS协议,MSAL V2端点默认拒绝HTTP协议的回调请求。
  • 第三步:调整认证授权配置(Program.cs/Startup.cs)
    确保配置符合云端部署要求,参考示例代码:
    // 放在所有中间件最前面,强制云端HTTPS跳转
    app.UseHttpsRedirection();
    
    // 认证配置(默认模板生成的配置无需额外修改,确保没有新增多余的角色要求即可)
    builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"));
    
    // 授权配置,默认策略仅要求用户已登录,无额外角色/声明限制
    builder.Services.AddAuthorization(options =>
    {
        options.FallbackPolicy = options.DefaultPolicy;
    });
    
    // 中间件顺序不能乱:认证 → 授权 → 路由
    app.UseRouting();
    app.UseAuthentication();
    app.UseAuthorization();
    
  • 第四步:核对App Service运行参数
    进入App Service的「配置」-「应用程序设置」,确认已配置以下参数,和Azure AD应用注册的信息完全一致,不要依赖打包时的appsettings.json配置:
    • AzureAd:Instance:通常为https://login.microsoftonline.com/
    • AzureAd:TenantId:你的租户ID
    • AzureAd:ClientId:Azure AD应用注册的客户端ID
    • AzureAd:ClientSecret:Azure AD应用注册生成的客户端密钥
可选验证操作

如果修复后仍有问题,可先移除_Imports.razor中的全局[Authorize]特性,部署后验证匿名状态是否能正常访问页面,确认是应用内授权逻辑问题还是云端配置问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:48:02