Я разработал сценарий PowerShell, который позволяет правильно настраивать различные параметры Функционального приложения (включая, например, CORS). Приложение Function Function работает и может вызываться из службы управления Api.
Когда возникла необходимость настроить Azure AD , я использовал Az / CLI для репликации точно , что я делаю, используя Portal UI (и то, что я установил вручную, отлично работает). Но он перестал работать, APIM возвращает код состояния HTTP 401 (не авторизован).
Часть сценария, которая настраивает Azure AD, выглядит следующим образом:
# $add is a simple class that contains value to be configured
# actually AllowedTokens is always empty
if ($aad) {
'Setting Function App AAD configuration.' | Write-Verbose
$allowedTokens = if ($aad.AllowedTokens) { "--aad-allowed-token-audiences $($aad.AllowedTokens -join ' ')" } else { '' }
"az webapp auth update --name $name --resource-group $group --enabled $($aad.Enabled.ToString().ToLower())" +
" --action LoginWithAzureActiveDirectory --aad-client-id $($aad.ClientId) --aad-client-secret $($aad.ClientSecret)" +
" --token-store true" +
" --aad-token-issuer-url $($aad.TokenIssuerUrl) $allowedTokens" |
Invoke-Expression
'Function App AAD configuration set.' | Write-Verbose
}
Первая странная вещь заключается в том, что если я отключаю аутентификацию / авторизацию,
Сохраняю настройки, включаю и сохраняю снова все начинает работать.
Итак, я снова начал и запустил скрипт. Я изучил ресурс.
az auth show
говорит, что unauthenticatedClientAction
установлен на RedirectToLoginpage
.
az resource show
говорит, что unauthenticatedClientAction
установлен на null
.
Когда я делаю трюк, описанный выше:
az auth show
говорит, что unauthenticatedClientAction
установлен на AllowAnonymous
.
az resource show
говорит, что unauthenticatedClientAction
установлен на null
.
Так что я думаю, что это важное различие для правильной работы приложения функций (или, что лучше, это способ его правильной настройки).
Поскольку я использовал этот метод с успехом для других настроек, я попытался установить это свойство с помощью Az / CLI:
az resource update --name web --resource-group $group --namespace Microsoft.Web --resource-type config `
--parent "sites/$funcName" --set properties.siteAuthSettings.unauthenticatedClientAction=AllowAnonymous
Возвращенный JSON ответ не показывает, что ничего не изменилось. Проверка ресурса подтверждает это.
Еще одна вещь, когда я экспортирую группу ресурсов, я не вижу unauthenticatedClientAction
ни в одном шаблоне приложения функции.
Как правильно установить unauthenticatedClientAction
до AllowAnonymous
?
Любая помощь будет по достоинству оценена!