Перенаправление для входа в систему с помощью AAD при проверке подлинности службы приложений Azure или проверке подлинности (классическая)

Я пытаюсь настроить систему, в которой фабрика данных Azure может вызывать функцию Azure через управляемое удостоверение. Хороший пример: Авторизация конечной точки Http для приложения функций Azure из фабрики данных

Однако здесь использовался старый (er) инструмент аутентификации / авторизации для функций Azure, который теперь был переименован в Authentication (Classic). Настроить систему через это нормально, я могу позвонить и получить ответ, но обновление до авторизации приводит к сбою. Похоже, что ключевой вещи не хватает, это опция Action, которую нужно предпринять, когда запрос не аутентифицирован, который я не могу установить с помощью нового инструмента авторизации, но должен быть установлен на Login with Azure AD.

Таким образом, как мне установить этот параметр с помощью нового инструмента авторизации, чтобы MSI мог улучшить функцию и пройти аутентификацию с помощью AAD.

Изображение с классикой

введите описание изображения здесь

Изображение с новой авторизацией (нет видимого способа перенаправления в AAD)

введите описание изображения здесь

Таким образом, как мне установить этот параметр с помощью нового инструмента авторизации, чтобы MSI мог улучшить функцию и пройти аутентификацию с помощью AAD.


comment
Вот, возможно, два метода аутентификации: делегированный (поток входа в систему) и приложение (поток серверных служб). Для вашего сценария учетные данные клиента (серверные службы) - лучший вариант.   -  person sakulachi8    schedule 08.06.2021


Ответы (1)


Чтобы заставить его работать с новым Authentication, выполните следующие действия.

1. Отредактируйте Authentication settings на портале или установите его при создании приложения, как показано ниже.

введите описание изображения здесь

2. Отредактируйте Identity provider, убедитесь, что Issuer URL равно https://sts.windows.net/<tenant-id> (без /v2.0) и Allowed token audiences включите App ID URI.

введите описание изображения здесь

введите описание изображения здесь

Что касается App ID URI, вы можете проверить его в своем приложении AD приложения-функции - ›Expose an API, если вы раньше использовали старый Authentication, возможно, это URL-адрес вашего приложения-функции, это имеет значение, просто убедитесь, что Allowed token audiences включил его.

введите описание изображения здесь

3. Затем в веб-активности фабрики данных также убедитесь, что это ресурс App ID URI.

введите описание изображения здесь

Тогда все будет нормально работать.

введите описание изображения здесь

Обновление:

Вы можете сослаться на мою конфигурацию.

Приложение-функция:

введите описание изображения здесь

введите описание изображения здесь

Приложение AD:

введите описание изображения здесь

введите описание изображения здесь

Манифест приложения AD:

{
    "id": "xxxxxx",
    "acceptMappedClaims": null,
    "accessTokenAcceptedVersion": null,
    "addIns": [],
    "allowPublicClient": null,
    "appId": "xxxxx",
    "appRoles": [],
    "oauth2AllowUrlPathMatching": false,
    "createdDateTime": "2021-06-08T01:51:06Z",
    "disabledByMicrosoftStatus": null,
    "groupMembershipClaims": null,
    "identifierUris": [
        "api://xxxxx"
    ],
    "informationalUrls": {
        "termsOfService": null,
        "support": null,
        "privacy": null,
        "marketing": null
    },
    "keyCredentials": [],
    "knownClientApplications": [],
    "logoUrl": null,
    "logoutUrl": null,
    "name": "joyfuna2",
    "oauth2AllowIdTokenImplicitFlow": true,
    "oauth2AllowImplicitFlow": false,
    "oauth2Permissions": [
        {
            "adminConsentDescription": "Allow the application to access joyfuna2 on behalf of the signed-in user.",
            "adminConsentDisplayName": "Access joyfuna2",
            "id": "1704f162-421d-4733-855f-5d93c0c55689",
            "isEnabled": true,
            "lang": null,
            "origin": "Application",
            "type": "User",
            "userConsentDescription": "Allow the application to access joyfuna2 on your behalf.",
            "userConsentDisplayName": "Access joyfuna2",
            "value": "user_impersonation"
        }
    ],
    "oauth2RequirePostResponse": false,
    "optionalClaims": null,
    "orgRestrictions": [],
    "parentalControlSettings": {
        "countriesBlockedForMinors": [],
        "legalAgeGroupRule": "Allow"
    },
    "passwordCredentials": [
        {
            "customKeyIdentifier": null,
            "endDate": "2031-06-08T01:51:05.573Z",
            "keyId": "c6d4434f-7aaf-4c4c-9428-a38cbf8200bb",
            "startDate": "2021-06-08T01:51:05.573Z",
            "value": null,
            "createdOn": "2021-06-08T01:51:07.3876164Z",
            "hint": "UT_",
            "displayName": "Generated by App Service"
        }
    ],
    "preAuthorizedApplications": [],
    "publisherDomain": "xxxxxx.onmicrosoft.com",
    "replyUrlsWithType": [
        {
            "url": "https://joyfuna2.azurewebsites.net/.auth/login/aad/callback",
            "type": "Web"
        }
    ],
    "requiredResourceAccess": [
        {
            "resourceAppId": "00000003-0000-0000-c000-000000000000",
            "resourceAccess": [
                {
                    "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
                    "type": "Scope"
                }
            ]
        }
    ],
    "samlMetadataUrl": null,
    "signInUrl": "https://joyfuna2.azurewebsites.net",
    "signInAudience": "AzureADMyOrg",
    "tags": [],
    "tokenEncryptionKeyId": null
}

Веб-активность Datafactory:

введите описание изображения здесь

person Joy Wang    schedule 08.06.2021
comment
Привет, Джой, спасибо за ответ. К сожалению, это все еще не сработало, и я получаю сообщение об ошибке в ADF типа «Ошибка проверки аудитории, аудитории не совпадают». Я установил параметры в соответствии с вашими предложениями, включая удаление версии 2.0 в URL-адресе эмитента. Есть ли другие настройки, которые могут вызывать это? - person Aegir; 08.06.2021
comment
@Aegir Вы использовали что-нибудь еще для защиты своей функции, например APIM? - person Joy Wang; 08.06.2021
comment
нет, это просто базовая функция Python, использующая шаблон HttpTrigger, предоставленный Azure. Звонок через браузер позволяет мне получить ответ. Настройки провайдера идентификации: ID провайдера: MS. Поддерживаемые типы учетных записей: текущий клиент-одиночный клиент URL-адрес эмитента: sts.windows.net/?tenant_ID › Разрешенная аудитория токенов: api: // ‹app_id› - person Aegir; 08.06.2021
comment
Существуют ли какие-либо дополнительные роли RBAC, которые удостоверение ADF должно иметь в группе RG? Кажется маловероятным, но на данный момент готов попробовать что-нибудь - person Aegir; 08.06.2021
comment
@Aegir Для этого не нужны никакие роли RBAC. Не могли бы вы удалить приложение AD и создать новое для повторной настройки? Могут быть настроены и другие параметры, но я не обращаю на них внимания. - person Joy Wang; 08.06.2021
comment
@Aegir Дважды проверьте, что три места используют одно и то же значение, то есть URI идентификатора приложения, Expose an API, Allowed token audience, Resource. - person Joy Wang; 08.06.2021
comment
Хорошо, похоже, новый сервис приложений работает. Возможно, это была проблема во время обновления с классической версии на новую или что-то еще, что я случайно изменил. Большое спасибо за ваше время и помощь с этим, я ценю это - person Aegir; 08.06.2021
comment
Позвольте нам продолжить это обсуждение в чате. - person Aegir; 08.06.2021
comment
@Aegir См. Мое обновление, также обратите внимание, чтобы провести быстрый тест, я не использовал App role, как упоминал в этом сообщение. - person Joy Wang; 08.06.2021