Приложение Azure AAD может получить доступ к приложению администратора без предоставления разрешения с помощью токена - PullRequest
0 голосов
/ 17 мая 2019

У меня есть два приложения Azure Ad:

1) Admin / BackendApp, который защищает мой webapi

2) Потребительское приложение, которое будет потреблять мой webapi

Когда я пытаюсь получить доступ к своему веб-интерфейсу API с помощью токена, созданного с использованием приведенного ниже URL-адреса, передавая требуемые ClientID, ClientSecret, Resource и grant_type = client_credentials

https://login.microsoftonline.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/oauth2/token

Я получаю токен доступа с вышеупомянутого URL и передаю этот токен как заголовок авторизации в мой webapi. Я получаю успешный ответ без предоставления доступа к / от admin / backendapp.

Ответы [ 2 ]

3 голосов
/ 17 мая 2019

Вам необходимо , чтобы проверить действительные области / роли в токене!

Определите делегированные / прикладные разрешения для API в Azure AD и применяйте их в своем API. Хорошо бы иметь глобальную проверку того, что токен содержит хотя бы одно действительное разрешение.

Приложение любого арендатора может получить токен для вашего API, если они знают ваш идентификатор клиента и идентификатор клиента. Если вы не проверяете разрешения, ваш API уязвим!

У меня есть статья о том, как определять и применять области действия в ASP.NET Core: https://joonasw.net/view/azure-ad-authentication-aspnet-core-api-part-1

1 голос
/ 17 мая 2019

На основании вашего запроса токен JWT создается для вызова API, у которого уже есть достаточно прав для вызова ресурсов. Это похоже на нормальный сценарий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...