Как обеспечить безопасность API в Azure API Management для доступа через Angular (adal-angular5)? - PullRequest
0 голосов
/ 17 мая 2018

Фон

  1. Я создал тестовый API в Azure-API-Mangement.Я могу получать данные из API, пока я предоставляю «ключ подписки».Я не знаю, как настроить безопасность для связи с Azure AD.

  2. Я создаю SPA в Angular и использую adal-angular5.Я следовал этому превосходному руководству по SpikesApps , однако использую adal-angular5 вместо adal-angular4 .Я могу получить токен 1296 символов вошедшего в систему пользователя.См. Снимок экрана ниже:

Указанное выше руководство SpikesApps подключается к API, который был создан как Azure WebApp, а не как часть Azure-API-Management.Руководство использует токен пользователя и отправляет его в качестве заголовка в HTTP get.(Авторизация: Bearer [user 1296 char token]).

Мои ограниченные знания Azure говорят мне, что настройка безопасности для API Azure WebbApp отличается от API в Azure-API-Management.

Отличие моей ситуации от руководства SpikesApps (и, следовательно, почему я застрял) заключается в том, что я хочу безопасно подключиться к API, который является частью Azure-API-Management.

Мои вопросы :

  1. Можно ли защитить API в Azure-API-Management так, чтобы мой Angular SPA мог получить к нему доступ, указав заголовок Authorization: Bearer <user 1296 char token>?(То есть согласно API, доступному в SpikesApps guide ).

  2. Если нет, каковы мои варианты?

  3. Я немного прочитал о политиках "validate-jwt" для API в Azure-API-Management.Если это единственный метод, как я могу получить JWT?Я предполагаю, что JWT НЕ совпадает с уже имеющимся у меня токеном 1296 символов?

Снимки экрана

(Отображение информации о пользователе, полученной с помощью adal-angular5 в моем Angular SPA)

Screenshot showing the userInfo object

(Пример того, как adal-angular5 добавляет заголовок авторизации в запрос на получение. https://www.npmjs.com/package/adal-angular5)

adal-angular5 HttpService get example

1 Ответ

0 голосов
/ 17 мая 2018

Выяснили решение буквально через час после публикации вышеуказанного вопроса (до этого я потратил много часов!).

Необходимо добавить validate-jwt во входящую политику API.

Я сделал это, следуя (некоторым из) инструкциям на этой странице: https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad#configure-a-jwt-validation-policy-to-pre-authorize-requests

Действительно нужно только сделать следующее:

  1. Создать «регистрацию приложения» в Azure AD для связи с API в APIM.Давайте назовем это backend-app
  2. В API Management измените политику входящего компонента рассматриваемого API, добавив код, как показано на снимке экрана ниже
  3. При созданиизаголовок запроса GET должен содержать: <Authorization: Bearer {USER_TOKEN}> (в соответствии с указаниями выше в оригинальном вопросе)
  4. Не забудьте включить ключ подписки в запрос GET.

enter image description here

...