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

Azure App Service部署时Azure AD配置的正确方式咨询

正确配置Azure AD用于Azure App Service上的Blazor Server(.NET7)

一、理解Azure App Service自动生成的App Registration

创建App Service并启用身份验证/授权(Easy Auth)时,Azure会自动生成一个App Registration。它的核心作用包括:

  • 处理用户端的OAuth2/OpenID Connect登录流程
  • 作为App Service的服务主体,用于访问KeyVault、存储账户等Azure资源

你之前用独立App Registration的方式能实现功能,但采用自动生成的注册可简化配置、减少后期维护成本。

二、切换到自动生成App Registration的实操步骤

1. 启用App Service身份验证

在Azure Portal的App Service资源面板中,进入身份验证页面:

  • 开启“应用服务身份验证”开关
  • 设置“未经过身份验证的请求”为“重定向到登录页”(可根据业务需求调整)
  • 选择“Microsoft”作为身份提供者,默认会关联自动生成的App Registration,无需额外手动创建

2. 更新Blazor Server的认证代码

修改Program.cs中的认证逻辑,移除硬编码的独立App Registration信息,改用App Service注入的环境变量:

builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"));

// 若需调用下游API,调整为使用自动注册的凭据
builder.Services.AddMicrosoftIdentityWebApiCallsDownstreamApi()
    .AddInMemoryTokenCaches();

接着在App Service的配置→应用程序设置中添加AzureAd相关参数:

  • AzureAd__Instance: https://login.microsoftonline.com/
  • AzureAd__Domain: 你的Azure AD租户域名(如contoso.com)
  • AzureAd__TenantId: 租户ID
  • AzureAd__ClientId: 自动生成的App Registration的Client ID(可在App Service身份验证面板查看,或Azure AD的App Registrations中找到对应App Service名称的注册)

无需手动配置ClientSecret,App Service会自动维护与Azure AD的信任关系

3. 配置下游API权限(如有需求)

若Blazor Server需调用下游API(如Microsoft Graph或自定义API):

  • 在Azure AD中找到自动生成的App Registration
  • 进入API权限页面,添加所需权限(注意区分委派权限和应用权限)
  • 委派权限需确保已完成管理员同意(租户范围生效时)

三、KeyVault访问的规范配置

你发现应用用自动生成的App Registration访问KeyVault是正确的路径,因为该注册本质就是App Service的服务主体。优化配置步骤如下:

  1. 在KeyVault的访问策略中,添加自动生成的App Service服务主体,授予所需权限(如机密读取、密钥管理等)
  2. 更推荐启用系统分配的托管标识:进入App Service的标识面板,开启“系统分配”标识,之后KeyVault访问策略可直接选择该标识,无需手动查找Client ID
  3. 修改Blazor Server的KeyVault配置,通过托管标识自动认证:
builder.Configuration.AddAzureKeyVault(
    new Uri("https://your-keyvault-name.vault.azure.net/"),
    new DefaultAzureCredential());

此配置下,应用会自动使用App Service的系统托管标识访问KeyVault,无需维护任何凭据。

四、本地开发与部署的统一配置方案

为避免环境差异导致的配置混乱,建议:

  • 本地开发时,用用户机密存储AzureAd配置(对应你之前创建的独立App Registration)
  • 部署到App Service时,通过应用程序设置覆盖AzureAd参数,指向自动生成的注册
  • 本地访问KeyVault时,DefaultAzureCredential会自动优先使用本地开发工具的凭据(如Azure CLI、Visual Studio登录凭据)

五、不推荐独立App Registration+App Service配置的原因

虽然这种方式能运行,但存在明显弊端:

  • 需要维护两套App Registration(本地和部署),增加管理成本
  • 手动维护ClientSecret需定期轮换,而自动注册或托管标识无需处理凭据生命周期
  • 自动生成的注册与App Service深度集成,能简化身份验证流程和资源权限管控

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:35:19