- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个与使用 Arm 或 Bicep 模板配置 Azure 函数身份验证相关的问题。
当我使用门户为 Azure 功能配置身份验证时,会在配置中自动创建 MICROSOFT_PROVIDER_AUTHENTICATION_SECRET。但是,当我使用下面的 Bicep 模板时,不会创建 MICROSOFT_PROVIDER_AUTHENTICATION_SECRET。
我还尝试了 CLI 中的“az webapp auth microsoft update”命令并得到了相同的结果。创建身份验证配置时没有使用 MICROSOFT_PROVIDER_AUTHENTICATION_SECRET
param function1name string = 'testfunctionnum1'
param region string
param srv string = 'xxxxx'
resource site1 'Microsoft.Web/sites@2022-03-01' = {
name: function1name
kind: 'functionapp,linux'
location: region
identity:{
type: 'SystemAssigned'
}
properties: {
// name: function1name
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
]
}
serverFarmId: srv
}
}
resource fn1config 'Microsoft.Web/sites/config@2022-03-01' = {
parent: site1
name: 'web'
properties:{
linuxFxVersion: 'PYTHON|3.9'
ftpsState: 'FtpsOnly'
}
}
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:'xxx'
clientSecretSettingName: 'MICROSOFT_PROVIDER_AUTHENTICATION_SECRET'
openIdIssuer: 'https://sts.windows.net/xxxx/v2.0'
}
// login:{
// disableWWWAuthenticate: false
// }
// isAutoProvisioned: false
}
}
login:{
tokenStore:{
enabled:true
}
}
}
}
最佳答案
这是我发现唯一有效的方法。希望 Bicep 能够尽快创建 AD 应用程序,因为这非常令人沮丧。
您可以使用 Azure CLI 在 AD 中创建应用程序和 key ,然后使用它们将它们传递到二头肌和函数应用程序身份验证设置中。请注意,我将 key 保存到配置中,并使用客户端 ID 进行身份验证设置。
例如,我有一个 powershell 脚本:
param(
[Parameter()]
[string]$functionAppName = "functionAppName",
[Parameter()]
[string]$resourceGroupName = "resourceGroupName"
)
$replyUrl = "https://$functionAppName.azurewebsites.net/.auth/login/aad/callback"
$existingApp = az ad app list --display-name $functionAppName | ConvertFrom-Json
if($existingApp.Length -eq 0) {
$app = az ad app create --display-name $functionAppName --web-redirect-uris "$replyUrl" --enable-id-token-issuance --sign-in-audience "AzureADMyOrg" | ConvertFrom-Json
$appId = $app.appId
} else {
$appId = $existingApp[0].appId
}
$secret = az ad app credential reset --id $appId --years 1 --append | ConvertFrom-Json
$secretValue = $secret.password
$bicepFilePath = "path-to-bicep.bicep"
az deployment group create `
--resource-group $resourceGroupName `
--template-file $bicepFilePath `
--parameters functionAppClientId=$appId functionAppClientSecret=$secretValue
二头肌:
param location string = resourceGroup().location
param functionAppName string
param functionAppClientId string
@secure()
param functionAppClientSecret string
var functionAppPlanName = '${functionAppName}-plan'
var functionAppStorageName = '${functionAppName}-storage'
// NOTE THAT YOU MIGHT WANT TO PASS THIS TENANT ID DOWN IF TENANT IS DIFFERENT FROM SUBSCRIPTION
var tenantId = subscription().tenantId
resource functionAppPlan 'Microsoft.Web/serverfarms@2021-02-01' = {
name: functionAppPlanName
location: location
sku: {
name: 'Y1'
tier: 'Dynamic'
}
}
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-04-01' = {
name: functionAppStorageName
location: location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource functionApp 'Microsoft.Web/sites@2021-02-01' = {
name: functionAppName
location: location
kind: 'functionapp'
identity: {
type: 'SystemAssigned'
}
properties: {
serverFarmId: functionAppPlan.id
clientAffinityEnabled: false
httpsOnly: true
siteConfig: {
appSettings: [
{
name: 'FUNCTIONS_WORKER_RUNTIME'
value: 'dotnet'
}
{
name: 'AzureWebJobsStorage'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccount.name};AccountKey=${storageAccount.listKeys().keys[0].value};'
}
{
name: 'FUNCTIONS_AUTH_AAD_SECRET'
value: functionAppClientSecret
}
{
name: 'FUNCTIONS_EXTENSION_VERSION'
value: '~4'
}
]
}
}
}
resource authsettings 'Microsoft.Web/sites/config@2022-03-01' = {
parent: functionApp
name: 'authsettingsV2'
properties: {
platform: {
enabled: true
runtimeVersion: '2'
}
identityProviders: {
azureActiveDirectory: {
enabled: true
registration: {
clientId: functionAppClientId
clientSecretSettingName: 'FUNCTIONS_AUTH_AAD_SECRET'
openIdIssuer: 'https://sts.windows.net/${tenantId}/v2.0'
}
}
}
}
}
我想指出的是,我尽可能保持简单。但最佳实践要求您实际上将客户端 key 保存到 keystore 中,然后在应用程序设置中引用该 key 。
关于azure - 使用 Arm 或 Bicep 模板配置 Azure 函数身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74738147/
我能够使用最新的 Bicep 版本 0.4 创建应用服务计划和应用服务。 resource myAppServicePlan 'Microsoft.Web/serverfarms@2021-01-01
我有一个二头肌文件,应该创建一个虚拟网络网关。我通过创建虚拟网络的单独二头肌文件将其分解。我真正应该做的是有一个用于 vnet 创建的模块和另一个用于虚拟网络网关的模块,因为 bicep 对我来说是新
我正在尝试使用 bicep 将 apim 后端资源部署到现有 apim 实例中。这是我的 apim mdoule 的相关部分: resource apim 'Microsoft.ApiManageme
我想生成一个二头肌来构建逻辑应用程序。其样板是 resource logicApp 'Microsoft.Logic/workflows@2019-05-01' = { name: 'lapp-$
像往常一样与二头肌文档碰撞。我似乎找不到任何有关如何向自动化帐户 Runbook 的作业计划添加参数的帮助。 MS 的示例是 name: 'string' parent: resourceSy
我的情况是,我有一个公司列表,以及一个我想在我的二头肌文件中配对的队列列表。我想使用结果将队列添加到服务总线命名空间。 这是队列数组的示例: `var queues = [ 'first-queu
在二头肌中,我有一个主要的二头肌,它会调用 部署应用服务的模块 部署托管身份的模块 应用程序服务模块如下所示,它使用用户分配的托管 ID 的输出,并在应用程序服务的身份中分配: 主要二头肌 modul
我有一个应用程序,它有一个二头肌文件(用于部署 azure 应用程序服务),它调用另一个存储库中的模板模块(应用程序服务模板)。模板模块引用同一存储库中的多个模块。它调用一个用于应用服务计划的模块,一
尝试将托管标识分配给同一租户中单独订阅中的资源组。我可以通过 Azure 门户实现此目的。我的 Main.bicep,类似这样: targetScope = 'subscription' module
我目前正在尝试手动将现有 ARM 模板转换为二头肌,因为自动反编译方法失败。 现有模板包含以下变量: "environmentSize": { "dev": "small",
我正在运行二头肌 0.4.1318。 我有一个“主”二头肌模块,它调用子模块来配置数据工厂: var adfName = 'adf-ctaxrebate-${envPlusSuffix}-${form
我有一个 Azure Bicep 模板,用于部署存储帐户和容器。但是,当我重命名容器或注释掉模板中的容器资源时,不会触发删除操作。相反,它会创建一个新容器并且不会删除旧容器。有什么想法为什么会发生这种
我想创建一个 Azure 容器应用程序,该应用程序从位于不同订阅中的现有 Azure 容器应用程序注册表中提取其镜像。 我的主要二头肌: 创建用户分配的托管身份 将托管身份的 ACR Pull RBA
我刚开始使用 Azure 二头肌。我正在尝试使用以下二头肌文件部署一个简单的应用程序服务计划/应用程序服务: resource azBicepAsp1 'Microsoft.Web/serverfar
我想要一个可以向现有应用服务(本例中为函数应用)添加一组固定的 IP 限制规则的模块。 我在 main.bicep 中添加了对“ipSecurityRestrictions”模块的调用,如下所示: m
如何使用 bicep 更新字典对象,例如:原始字典对象: var dict = { 'a': {} } 我现在有一个数组:['b', 'c'],我想更新 dict 对象,例如: { 'a':
我需要: 创建数据工厂 创建存储帐户 创建函数应用 将数据工厂的角色分配添加到存储帐户 将函数应用的角色分配添加到存储帐户 数据工厂是在与“主”二头肌不同的模块中创建的。这是为了防止“主”模板太大而难
我正在尝试引用现有的二头肌模块作为另一个资源的父级。 module vnethub 'modules/vnet/vnet.bicep' = { scope: resourceGroup(rg.na
我正在尝试创建一个二头肌模板来根据条件部署具有 1 个或 2 个 NIC 的虚拟机。 有人知道是否有一种方法可以在属性定义中使用条件语句来部署虚拟机网卡吗?似乎资源定义中不允许使用 if 函数,并且由
我正在尝试使用以下代码创建一个简单的应用服务计划。 param Location string = 'eastus' resource appServicePlan1 'Microsoft.Web/s
我是一名优秀的程序员,十分优秀!