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: 租户IDAzureAd__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的服务主体。优化配置步骤如下:
- 在KeyVault的访问策略中,添加自动生成的App Service服务主体,授予所需权限(如机密读取、密钥管理等)
- 更推荐启用系统分配的托管标识:进入App Service的标识面板,开启“系统分配”标识,之后KeyVault访问策略可直接选择该标识,无需手动查找Client ID
- 修改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
相关产品推荐
相关产品推荐

