Приложение Azure AD предоставляет токен на предъявителя с областью из другого приложения AD под тем же клиентом - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть приложение AD (идентификатор клиента: xyz, область действия: xyz_123) и другое приложение AD (идентификатор клиента: abc, область действия: abc_123) под tenant .


Предположим, мой код проверки токена jwt в службе похож на

.AddJwtBearer(o =>
        {
            o.Authority = Configuration["Authentication:Authority"];
            o.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
            {
                ValidAudiences = new List<string>
                {
                    xyz,
                    xyz_123
                }
            };

Так что теперь, когда я генерирую токен-носитель с grant_type в качестве учетных данных клиента и идентификатор клиента: abc и идентификатор_ресурса: xyz_123 и попадание в мой сервис, аутентификация прошла успешно.


Это ожидаемое поведение. Почему приложение AD (идентификатор клиента: abc) предоставляет токен-носитель при обращении к ресурсу / области, которых у него нет (xyz_123). Все ли экземпляры приложения AD под одним и тем же клиентом имеют доступ ко всем его областям?

1 Ответ

0 голосов
/ 05 ноября 2019

Да. Вы должны проверить права доступа к токену для правильной защиты вашего API.

Раньше это можно было делать за пределами границ арендатора, но теперь это возможно только в пределах арендатора: https://joonasw.net/view/cross-tenant-token-attacks-now-harder-in-azure-ad.

Вам необходимопроверьте, чтобы у любого маркера доступа, полученного вашим приложением, было хотя бы одно действительное делегированное / разрешение приложения: https://joonasw.net/view/always-check-token-permissions-in-aad-protected-api

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