Pulumi AD: круговая зависимость приложения и функции Azure при настройке ADAL - PullRequest
0 голосов
/ 30 октября 2019

Я настраиваю функцию Azure с аутентификацией ADAL, и у меня есть одна проблема с pulumi, потому что приложение функции нуждается в создании приложения рекламы, а затем приложение приложения нуждается в создании приложения функции для установки ответаurl.

const adAppName = `${projectName}-${env}`
const adApp = new azuread.Application(adAppName, {
    name: adAppName,
    requiredResourceAccesses: [
        {
            resourceAccesses: [
                {
                    id: "311a71cc-e848-46a1-bdf8-97ff7156d8e6",
                    type: "Scope",
                },
            ],
            resourceAppId: "00000002-0000-0000-c000-000000000000",
        }
    ],
    replyUrls: [ 'https://myapp.azurewebsites.net/.auth/login/aad/callback' ] // This url is hardcoded
});

const appFunctionName = `${projectName}-${env}`;
const appFunction = new azure.appservice.FunctionApp(appFunctionName, {
    ...resourceGroupArgs,
    name: appFunctionName,
    appServicePlanId: appServicePlan.id,
    authSettings: {
        enabled: true,
        unauthenticatedClientAction: 'RedirectToLoginPage',
        defaultProvider: 'AzureActiveDirectory',
        issuer: `https://sts.windows.net/${azure.config.tenantId}/`,
        activeDirectory: {
            clientId: adApp.applicationId
        }
    },
    storageConnectionString: storageAccount.primaryConnectionString,
    version: '~2',
    appSettings: appSettings,

});

Как мы решаем этот тип круговой ссылки? Я хотел бы, чтобы создавался replyUrls со значением URL-адреса appFunction.

Спасибо

1 Ответ

1 голос
/ 30 октября 2019

Я думаю, что нет способа исправить эту циклическую зависимость.

Но так как у вас есть фиксированное имя для службы приложений, ее URL предсказуем. Вы можете переместить вашу декларацию appFunctionName наверх и затем использовать ее в назначении replyUrls:

replyUrls: [ `https://${appFunctionName}.azurewebsites.net/.auth/login/aad/callback` ]

Я не вижу в этом большого недостатка. Вы должны будете отформатировать этот URL независимо, теперь вы получаете только дополнительный бит .azurewebsites.net по сравнению с использованием defaultHostName.

...