Развертывание приложения-функции Terraform Azure с auth_settings_v2 настраивает Microsoft (V1)

Я пытаюсь развернуть функциональное приложение 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?

Вы указали переменную runtimeversion в блоке auth. @quincy783

Jahnavi 22.05.2024 11:19
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
1
208
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Версия поставщика 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{}
  }
} 

Выход:

Другие вопросы по теме

Похожие вопросы