如何在Azure DevOps部署Azure Web Apps时不使用Basic Authentication
解决方案
方案1:调整现有AzureRmWebAppDeployment@4任务配置
默认情况下,AzureRmWebAppDeployment@4在使用AzureRM服务主体连接时,可能仍会尝试获取Web App的发布配置文件(该过程依赖Basic Authentication)。你可以通过显式指定部署方式为RunFromPackage来规避这个问题:
- task: AzureRmWebAppDeployment@4 inputs: ConnectionType: 'AzureRM' azureSubscription: '<service principal name>' appType: 'webApp' WebAppName: '<webapp name>' packageForLinux: '$(Build.ArtifactStagingDirectory)/**/DeployApp.zip' # 显式设置部署方式为RunFromPackage,避免依赖发布配置文件 deploymentMethod: 'runFromPackage'
runFromPackage方式直接通过Azure ARM API完成部署,全程使用服务主体的OAuth认证,不涉及Basic Authentication。
方案2:改用Azure CLI任务部署(更推荐)
Azure CLI的az webapp deploy命令原生支持服务主体认证,完全不依赖Basic Authentication,逻辑更透明:
- task: AzureCLI@2 inputs: azureSubscription: '<service principal name>' scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az webapp deploy \ --name <webapp name> \ --resource-group <resource group name> \ --src-path $(Build.ArtifactStagingDirectory)/**/DeployApp.zip \ --type zip
注意替换<resource group name>为你的Web App所在资源组名称,该命令直接通过服务主体上下文完成部署,彻底绕开Basic Authentication相关逻辑。
关键注意点
- 确保服务主体拥有Microsoft.Web/sites/deployments/write权限(Web App部署权限),否则会出现授权失败。
- 两种方案均无需启用Basic Authentication,符合合规要求。
内容的提问来源于stack exchange,提问作者Wildly Stunted
相关产品推荐
相关产品推荐

