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

ARM/Bicep模板配置Azure Function认证时缺失指定密钥

解决Azure Function通过Bicep/CLI配置AAD认证时缺少MICROSOFT_PROVIDER_AUTHENTICATION_SECRET的问题

问题原因

Azure门户配置AAD认证时,会自动完成全流程操作:创建对应AAD应用注册、生成客户端密钥、将密钥值存入Function App的应用设置MICROSOFT_PROVIDER_AUTHENTICATION_SECRET。但使用Bicep或az webapp auth microsoft update命令时,仅完成了认证规则的配置,并未自动生成或注入客户端密钥值,因此会缺失这个关键的应用设置项。

解决方案

方案1:手动注入已有AAD应用的客户端密钥

如果你已经有现成的AAD应用注册和客户端密钥,直接在Bicep中添加应用设置即可:

修改Function App资源的siteConfig部分,添加appSettings数组(已有则追加):

resource site1 'Microsoft.Web/sites@2022-03-01' = {
  name: function1name
  kind: 'functionapp,linux'
  location: region 
  identity:{
    type: 'SystemAssigned'
  }
  properties: {
    // 其他属性保持不变
    siteConfig: {
      numberOfWorkers:1
      linuxFxVersion:'Python|3.9'
      acrUseManagedIdentityCreds: false
      alwaysOn: false
      http20Enabled: false
      functionAppScaleLimit: 200
      minimumElasticInstanceCount: 0
      // 添加应用设置
      appSettings: [
        {
          name: 'MICROSOFT_PROVIDER_AUTHENTICATION_SECRET'
          // 生产环境不推荐硬编码,建议用下方Key Vault引用方式
          // value: '<你的AAD应用客户端密钥>'
          value: '@Microsoft.KeyVault(SecretUri=https://your-kv.vault.azure.net/secrets/your-secret-name)'
        }
      ]
    }
    serverFarmId: srv
  }
}

注:使用Key Vault引用时,需确保Function App的系统身份拥有访问对应密钥的权限。

方案2:自动创建AAD应用并生成密钥

如果希望完全自动化(模拟门户行为),可以用Bicep创建AAD应用注册和密钥,再自动注入到应用设置:

param function1name string = 'testfunctionnum1'
param region string
param srv string = 'xxxxx'

// 1. 创建AAD应用注册
resource aadApp 'Microsoft.Authorization/applications@2021-04-01' = {
  name: '${function1name}-aad-app'
  properties: {
    displayName: '${function1name}-aad-app'
    web: {
      redirectUris: [
        'https://${site1.defaultHostName}/.auth/login/aad/callback'
      ]
    }
  }
}

// 2. 生成AAD应用客户端密钥(有效期1年)
resource aadAppSecret 'Microsoft.Authorization/applications/passwordCredentials@2021-04-01' = {
  parent: aadApp
  name: 'auth-secret'
  properties: {
    startDateTime: utcNow()
    endDateTime: utcNow('yyyy-MM-dd') addYears 1
  }
}

// 3. 创建Function App并注入密钥
resource site1 'Microsoft.Web/sites@2022-03-01' = {
  name: function1name
  kind: 'functionapp,linux'
  location: region 
  identity:{
    type: 'SystemAssigned'
  }
  properties: {
    scmSiteAlsoStopped: false
    clientAffinityEnabled: false
    clientCertEnabled: false
    clientCertMode: 'Required'
    hostNamesDisabled: false
    containerSize: 1536
    dailyMemoryTimeQuota: 0
    httpsOnly: true
    redundancyMode: 'None'
    storageAccountRequired: false
    keyVaultReferenceIdentity: 'SystemAssigned'
    siteConfig: {
      numberOfWorkers:1
      linuxFxVersion:'Python|3.9'
      acrUseManagedIdentityCreds: false
      alwaysOn: false
      http20Enabled: false
      functionAppScaleLimit: 200
      minimumElasticInstanceCount: 0
      appSettings: [
        {
          name: 'MICROSOFT_PROVIDER_AUTHENTICATION_SECRET'
          value: aadAppSecret.value
        }
      ]
    }
    serverFarmId: srv
  }
}

// 4. 配置认证设置,使用自动创建的AAD应用ID
resource fn1auth 'Microsoft.Web/sites/config@2022-03-01' = {
  parent: site1
  name: 'authsettingsV2'
  properties:{
    platform: {
      enabled: true
    }
    globalValidation: {
      requireAuthentication: true
      unauthenticatedClientAction: 'Return401'
    }
    identityProviders:{
      azureActiveDirectory:{
        enabled: true
        registration:{
          clientId: aadApp.properties.appId
          clientSecretSettingName: 'MICROSOFT_PROVIDER_AUTHENTICATION_SECRET'
          openIdIssuer: 'https://sts.windows.net/${subscription().tenantId}/v2.0'
        }
      }
    }
    login:{
      tokenStore:{
        enabled:true
      }
    } 
  }
}

注:部署此模板的账号需具备创建AAD应用的权限。

方案3:使用CLI补充密钥

如果已经通过CLI配置了认证,只需再执行以下命令添加应用设置:

az webapp config appsettings set --name <你的Function App名称> --resource-group <资源组名称> --settings MICROSOFT_PROVIDER_AUTHENTICATION_SECRET=<你的AAD客户端密钥>

注意事项

  • 生产环境禁止硬编码密钥,必须使用Key Vault存储并通过应用设置引用。
  • 密钥过期后需重新生成,并更新应用设置或Key Vault中的密钥。

内容的提问来源于stack exchange,提问作者El-Shorbagy Amr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:55:18