Как настроить MSAL для поддержки AAD, Angular 7+, Azure Funcs

Я хотел бы понять, как настроить MSAL и связанные артефакты, чтобы упростить следующую настройку.

  • Веб-сайт/приложение Frontend Angular 7+, опубликованное в учетной записи хранения Azure и используемое в качестве статического веб-сайта.
  • Серверный проект API функций Azure для выполнения операций CRUD в базе данных Cosmos-DB.
  • Как интерфейс веб-сайта Angular, так и серверная часть API функций Azure должны быть доступны только пользователям в нашей Azure Active Directory.

Я попытался узнать, как настроить MSAL для моего предполагаемого варианта использования, изучив этот демонстрационный проект: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/README.md. К сожалению, этот проект относится к серверному сайту API, который больше не работает. И биты бэкэнда не включены в репозиторий.

Демонстрационный проект msal-microsoft-authentication-library-for-js\lib\msal-angular\samples\MSALAngularDemoApp не работает в опубликованном виде. Попытки входа не удаются. Однажды встретив Uncaught (in promise): AADSTS650052: The app needs access to a service (\"api://a88bb933-319c-41b5-9f04-eff36d985612\") that your organization \"<MY-ORG>\" has not subscribed to or enabled.

С моей текущей конфигурацией в браузере я сталкиваюсь с отменой запроса, когда MSAL пытается сделать запросы в следующей форме:

https://login.microsoftonline.com/67ba7efb-e8.....52-1f993843c3a0/oauth2/authorize?response_type=code+id_token&redirect_uri=https%3A%2F%2Fte.....nfuncs.azurewebsites.net% 2F.auth%2Flogin%2Faad%2Fcallback&client_id=61601ca6-104.....524550f6ec&scope=openid+profile+email&response_mode=form_post&nonce=62877cb9e.....245f7f613_2019.....72304&state=redir%3D%252Fapi%252Fpeople% 253Fcode%253DqJH4Bs%252F.....ameK%252FPh5S5Th%252FXttS.....D%253D%2526имя-начинается-с%253Dji

Так что я явно делаю по крайней мере одну вещь неправильно. Ниже приводится сводка моей конфигурации. Однако вместо того, чтобы пытаться отлаживать мою конфигурацию, может оказаться проще (более эффективно) описать все шаги, необходимые для создания работающей конфигурации.

Azure Function App
Platform features
    Authentication / Authorization
        App Service Authentication: On
        Action to take when request is not authenticated
            Log in with Azure Active Directory
        Authentication Providers
            Azure Active Directory Configured (Express: Existing App)
            Advanced Settings Token Store
            ALLOWED EXTERNAL REDIRECT URLS
                Link to static website of storage container where Angular site is deployed
                E.g., https://<storagecontainer>.z5.web.core.windows.net/
    CORS
    ALLOWED ORIGINS
        https://<storagecontainer>.z5.web.core.windows.net/
        http://localhost:4200
Function Signatures
    `public static async Task<IActionResult> Function1([HttpTrigger(AuthorizationLevel.Function, "get", "post", "options", Route = null)] HttpRequest httpRequest, ILogger log) {`

Мне удалось заставить AAD-аутентификацию работать с Angular + Статический веб-сайт AZ Storage + Бэкэнд AZ Funcs, используя adal-angular, а не msal-angular(MSAL.js). Я адаптировал Пример Пита Скелли для Angular 7.2. Я использовал @auth0/angular-jwt вместо angular2-jwt для совместимости с RxJs 6.3.

CalvinDale 08.03.2019 01:11

Звучит как хороший ответ для меня @CalvinDale

HankCa 22.05.2019 08:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
2
2 386
0

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