Я пытаюсь развернуть функциональное приложение Azure Linux через Terraform. Это функциональное приложение использует аутентификацию на основе Microsoft. Внутри моего шаблона ресурса приложения-функции у меня есть этот блок для аутентификации:
"auth_settings_v2" {
content {
auth_enabled = true
require_authentication = true
microsoft_v2 {
client_id = var.app_registration_client_id
client_secret_setting_name = "MICROSOFT_PROVIDER_AUTHENTICATION_SECRET"
allowed_audiences = ["api://${var.app_registration_client_id}"]
}
login {}
}
}
Я также указываю app_setting
с именем MICROSOFT_PROVIDER_AUTHENTICATION_SECRET
. Я проверил на портале Azure, что проверка подлинности включена, но отображается «Microsoft (V1)». Я также проверил, что настройка приложения была добавлена с правильным секретным значением.
Я использую hashicorp/azurerm = 3.104.2
. Почему это включает аутентификацию V1 вместо V2?
Версия поставщика Terraform AzureRM
, которую вы используете, в основном ориентирована на библиотеку ADAL для аутентификации. Убедитесь, что вы правильно обновили версию terraform до последних выпусков.
Если проблема не устранена, попробуйте добавить свойство runtime_version
в блок auth_settings_v2
, как показано в коде ниже.
runtime_version = "~2"
Но после того, как я несколько раз пытался включить microsoft_v2
, но каждый раз он развертывался v1
. Похоже, это ошибка в документе.
В качестве обходного пути вы можете использовать провайдер аутентификации active_directory_V2 вместо microsoft_v2
.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.104.2"
}
}
}
provider "azurerm" {
features {}
}
data "azurerm_resource_group" "example" {
name = "Jahnavi"
}
resource "azurerm_storage_account" "example" {
name = "functionappsajnew"
resource_group_name = data.azurerm_resource_group.example.name
location = data.azurerm_resource_group.example.location
account_tier = "Standard"
account_replication_type = "LRS"
}
resource "azurerm_service_plan" "example" {
name = "jahplannew"
resource_group_name = data.azurerm_resource_group.example.name
location = data.azurerm_resource_group.example.location
os_type = "Linux"
sku_name = "Y1"
}
resource "azurerm_linux_function_app" "example" {
name = "exampleappjnew"
resource_group_name = data.azurerm_resource_group.example.name
location = data.azurerm_resource_group.example.location
storage_account_name = azurerm_storage_account.example.name
storage_account_access_key = azurerm_storage_account.example.primary_access_key
service_plan_id = azurerm_service_plan.example.id
site_config {}
app_settings = {
"MICROSOFT_PROVIDER_AUTHENTICATION_SECRET" = var.client_secret
}
auth_settings_v2 {
auth_enabled = true
runtime_version = "~2"
default_provider = "aad"
require_authentication = true
require_https = true
unauthenticated_action = "RedirectToLoginPage"
active_directory_v2 {
client_id = var.client_Id
client_secret_setting_name = "MICROSOFT_PROVIDER_AUTHENTICATION_SECRET"
tenant_auth_endpoint = "https://login.microsoftonline.com/tenant_ID/v2.0/"
}
login{}
}
}
Выход:
Вы указали переменную
runtimeversion
в блокеauth
. @quincy783