Проблема
Не удается получить displayName для клиента
Что такое?
Мое приложение - это мультитенантный веб-сайт. Я аутентифицирую клиента с помощью Open Id Connect и получаю токен доступа (скажем, armToken) из потока предоставления кода в ordre для выполнения этого запроса:
https://management.azure.com/tenants
Получится список всех арендаторов, у которых заявлен заказчик. Скажем, это Арендаторы.
Это прекрасно работает.
Где что-то пошло не так?
Затем я хочу получить дополнительную информацию обо всех арендаторах, поскольку это отображаемое имя. Поэтому мне нужно выполнить этот запрос для каждого клиента на Tenants:
https://graph.windows.net/[tenantId]/tenantDetails?api-version=1.6
Я использую такой код:
foreach (Tenant tenant in Tenants)
{
string graphToken = await
GetAuthorizationToken("https://graph.windows.net/", tenant.TenantId);
string json = await GetGraphRequest($"https://graph.windows.net/{tenant.TenantId}/tenantDetails? api-version=1.6", graphToken);
// I parse JSON to get my informations
}
Что я пробовал
Вероятно, проблема заключается в методе GetAuthorizationToken, который не получает правильный токен. Я протестировал все сигнатуры AcquireTokenAsync, ни одна из них не работает, за исключением:
AcquireTokenAsync(string resource, ClientCredential clientCredential);
Но полученный токен работает только в том случае, если тестируемый клиентом соответствует TID, найденному в заявках пользователя.
В зависимости от арендатора я получаю несколько сообщений:
{"odata.error": {"code": "Authorization_RequestDenied", "message": {"lang": "en", "value": "Недостаточно прав для завершения операции."}}} em>
==> Но я дал все возможные разрешения на Microsoft Grant
or
{"odata.error": {"code": "Authorization_IdentityNotFound", "message": {"lang": "en", "value": "Не удалось установить личность вызывающего приложения."} }}
=> фактически у меня нет претензий в качестве OID в токене
- Я проверил, нет ли в URI проблемы с косой чертой.
- Я проверил запрос графика с помощью Postman, чтобы убедиться, что это не проблема в коде
- Я глобальный администратор
Мой вопрос
Я действительно не знаю, что я могу сделать еще.
Это должно быть возможно, потому что я вижу, как это работает здесь:
https://github.com/projectkudu/AzureResourceExplorer
Но он не использует библиотеку ADAL. Так, может быть, это ограничение для этой библиотеки?