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

如何通过Bicep脚本创建应用注册并添加为App Service身份提供商?

解决方案:用Bicep将应用注册添加为App Service的身份提供商

完全可以通过Bicep完成这个操作,不需要手动配置。核心是使用Microsoft.Web/sites/config类型的authsettingsV2资源(而非旧版的authsettings),它可以作为App Service的子资源直接在Bicep中定义,无需单独部署到资源组。

具体实现步骤及代码示例

假设你已经通过Deployment Script创建了应用注册,拿到了clientId、clientSecret和租户ID,以下是完整的Bicep配置:

// 参数定义
param siteName string
param aadAppClientId string // 应用注册的Client ID
param aadAppClientSecret string // 应用注册的Client Secret
param tenantId string = subscription().tenantId

// 引用已存在的App Service(如果是新建App Service,直接定义即可)
resource targetSite 'Microsoft.Web/sites@2020-12-01' existing = {
  name: siteName
}

// 配置App Service的身份验证(authsettingsV2)
resource siteAuthSettings 'Microsoft.Web/sites/config@2020-12-01' = {
  parent: targetSite
  name: 'authsettingsV2'
  properties: {
    // 启用身份验证平台
    platform: {
      enabled: true
    }
    // 全局验证规则:强制所有用户认证,未认证用户跳转登录页
    globalValidation: {
      requireAuthentication: true
      unauthenticatedClientAction: 'RedirectToLoginPage'
    }
    // 配置Azure AD身份提供商
    identityProviders: {
      azureActiveDirectory: {
        enabled: true
        registration: {
          openIdIssuer: 'https://login.microsoftonline.com/${tenantId}/v2.0'
          clientId: aadAppClientId
          // 指向存储Client Secret的应用设置键名
          clientSecretSettingName: 'AAD_APP_CLIENT_SECRET'
        }
        login: {
          loginParameters: []
        }
      }
    }
  }
}

// 将应用注册的Client Secret存储到App Service的应用设置(避免明文暴露)
resource siteAppSettings 'Microsoft.Web/sites/config@2020-12-01' = {
  parent: targetSite
  name: 'appsettings'
  properties: {
    'AAD_APP_CLIENT_SECRET': aadAppClientSecret
  }
}

关键说明

  • 使用authsettingsV2:相比旧版authsettings,authsettingsV2支持更灵活的身份提供商配置(包括Azure AD、Google、GitHub等),是当前推荐的配置方式。
  • 子资源关联:通过parent: targetSite将authsettingsV2与目标App Service绑定,无需单独指定资源组,直接作为App Service的子资源部署。
  • 敏感信息存储:应用注册的Client Secret不要直接写在authsettingsV2的配置中,而是存储到App Service的应用设置里,通过clientSecretSettingName引用,提升安全性。
  • 与Deployment Script联动:如果是用Deployment Script创建应用注册,可以在脚本中输出clientId、clientSecret等参数,然后在Bicep中通过output和reference获取这些值,实现端到端的自动化部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:15:46