У вас нет разрешения на просмотр этого каталога или страницы. ошибка при использовании Azure AD для проверки подлинности API - PullRequest
0 голосов
/ 16 мая 2019

Мы получаем следующую ошибку при попытке использовать один из API, развернутых в Azure:

"У вас нет разрешения на просмотр этого каталога или страницы."

После многочисленныхУчебники мы создали и зарегистрировали приложение API в Azure.Затем включенная аутентификация AD для этого, однако, выглядит так, как будто нам не хватает разрешения или области действия, которая не позволяет почтальону получить доступ к API, даже если мы передаем токен доступа, сгенерированный из:

https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token

Мы заметили, что у маркера доступа нет области действия, роли и разрешений.Однако не уверены, где это нужно добавить, даже пытались добавить новую область в манифест.При просмотре журналов диагностики «наиболее вероятная причина» указывается следующим образом:

«У прошедшего проверку пользователя нет доступа к ресурсу, необходимому для обработки запроса.»

Генерируемый токен доступа:

{
   "aud": "https://xxxxxxxxxxxxxxxxxxxx.azurewebsites.net",
   "iss": "https://sts.windows.net/xxxxxxxxxxxxxxxxxxxxxx/",
   "iat": 1234343434,
   "nbf": 1234343434,
   "exp": 1234343434,
   "aio": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=",
   "appid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
   "appidacr": "1",
   "idp": "https://sts.windows.net/xxxxxxxxxxxxxxxxxxxxxxxx/",
   "oid": "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
   "sub": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
   "tid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
   "uti": "xxxxxxxxxxxxxxxxxxxxxx",
   "ver": "1.0"
 }

Код, сгенерированный почтальоном для получения вышеуказанного токена:

var client = new RestClient("https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Connection", "keep-alive");
request.AddHeader("content-length", "195");
request.AddHeader("accept-encoding", "gzip, deflate");
request.AddHeader("cookie", "fpc=AvF4ZvXAqUBPt5LOy7AEkVQIjAwtAQAAANhCb9QOAAAA; x-ms-gateway-slice=prod; stsservicecookie=ests");
request.AddHeader("Host", "login.microsoftonline.com");
request.AddHeader("Postman-Token", "b38e8e03-97f6-4d52-82fd-d9bec59de767,c13da490-096c-4847-8122-39d028d9625e");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "*/*");
request.AddHeader("User-Agent", "PostmanRuntime/7.11.0");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("undefined", "grant_type=client_credentials&client_id={clientId}&scope=https%3A%2F%2Fxxxxxxxx.azurewebsites.net%2F.default&client_secret={clientSecret}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

Код, сгенерированный при попытке использовать токен доступа и получить сообщение об ошибке:

var client = new RestClient("https://xxxxxxxxxxxxxxxxxx.azurewebsites.net/api/Status/xxxxxxx");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Connection", "keep-alive");
request.AddHeader("accept-encoding", "gzip, deflate");
request.AddHeader("cookie", "ARRAffinity=249d53bdc28cc342edb4965228850aa72a8304630357254128300b6abf863e83");
request.AddHeader("Host", "xxxxxxxxxxxxxxxxxxx.azurewebsites.net");
request.AddHeader("Postman-Token", "7a9e0638-90cf-41c6-b6bf-0eea11aca929,95980a03-ef39-4c1e-af35-65bec0aaa903");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "*/*");
request.AddHeader("User-Agent", "PostmanRuntime/7.11.0");
request.AddHeader("Authorization", "Bearer {bearerToken}");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
IRestResponse response = client.Execute(request);

1 Ответ

0 голосов
/ 16 мая 2019

Чтобы получить токен, вам нужно совершить POST звонок на management.azure.com

https://i.imgur.com/vfK7VkY.png

A, пока яСоберите информацию в приведенной ниже ссылке, чтобы уточнить шаги по использованию RestApi (в данном случае Postman) для управления Azure.

https://github.com/hhazeley/Azure-Postman

...