2015-11-03 2 views
0

Я потратил несколько дней, пытаясь понять это, глядя на всю информацию, которую я мог найти на веб-сайте Azure, концентраторы Azure git и все соответствующие столбцы переполнения стека. Надеюсь, я пропустил что-то простое.Azure Billing API возвращается 403

Я использую пример кода Java быть размещены вокруг сети, чтобы получить маркер:

try { 
     exec = Executors.newFixedThreadPool(1); 
     context = new AuthenticationContext("https://login.microsoftonline.com/8e4f0713-5eea-4da0-99c0-xxxxxxxxxxxx", 
         true, exec); 
     ClientCredential cred = new ClientCredential(webClientID, clientSecret); 
     Future<AuthenticationResult> future = context.acquireToken("https://management.azure.com/", cred, null); 
     result = future.get(); 
    } catch(Exception e) { 
     logger.warn("Exception " + e); 
    } finally { 
     exec.shutdown(); 
    } 

    if (result == null) { 
     return null; 
    } 
    return result.getAccessToken(); 

Это создает маркер, который я помещаю в заголовке запроса:

Authorization: Bearer -token- 

The GET https://management.azure.com/subscriptions/758ad253-cbf5-4b18-8863-xxxxxxxxxxxx/providers/Microsoft.Commerce/RateCard?api-version=2015-06-01-preview%26%24filter%3DOfferDurableId+eq+%27MS-AZR-0003p%27+and+Currency+eq+%27USD%27+and+Locale+eq+%27en-US%27+and+RegionInfo+eq+%27US%27 

Возвращает 403 кода :

Exception: java.io.IOException: Server returned HTTP response code: 403 for URL: https://management.azure.com/subscriptions/758ad253-cbf5-4b18-8863-xxxxxxxxxxxx/providers/Microsoft.Commerce/RateCard?api-version=2015-06-01-preview%26%24filter%3DOfferDurableId+eq+%27MS-AZR-0003p%27+and+Currency+eq+%27USD%27+and+Locale+eq+%27en-US%27+and+RegionInfo+eq+%27US%27 

Заголовки: [0] NULL: HTTP/1.1 403 Forbidden

[1] Cache-Control: нет-кэша

[2] Прагма: нет-кэша

[3] Content-Type: применение/JSON; кодировка = UTF-8

[4] Expires: -1

[5] X-MS-неудача-причина: Шлюз

[6] X-MS-запрос-ID: e4ad9253-E034 -481d-aba0-f46902b7057f

[7] X-MS-корреляционный-запрос-ID: e4ad9253-e034-481d-aba0-f46902b7057f

[8] X-MS-маршрутизации запроса-ID: EASTUS : 20151103T205103Z: e4ad9253-e034-481d-aba0-f46902b7057f

[9] Strict-Transport-Security: max-age = 31536000; IncludeSubdomains

[10] Дата: Вт, 3 ноября 2015 20:51:02 GMT

[11] Подключение: закрыть

[12] Content-Length: 303

Я сделал все установка на Лазурном консоли Упр, чтобы создать приложение в Azure AD, получить секрет клиента ClientId & и т.д. SSL/HTTPS код:

  azureURL = new java.net.URL(url); 

     con = (HttpsURLConnection)azureURL.openConnection(); 
     con.disconnect(); 
     con.setDoOutput(true); 
     con.setDoInput(true); 
     con.setUseCaches(false); 
     con.setSSLSocketFactory(MyUtils.getSSLSocketFactory()); 
     con.setRequestMethod("GET"); 
     con.setRequestProperty("x-ms-version", "2015-06-01-preview"); 
     con.setRequestProperty("Content-Type", "application/json"); 

     String token = getAccessTokenFromServicePrincipalCredentials(); 
     if (token != null) { 
      con.setRequestProperty("Authorization", "Bearer " + token); 
      con.connect(); 
      in = (InputStream)con.getContent(); 
      InputStreamReader inr = new InputStreamReader(in); 
     } else { 
      logger.warn("unable to obtain prices"); 
     } 

Любые предложения о том, как отладить проблему?

ответ

0

Я вижу, что вы получаете токен доступа для (то есть самого приложения). Пожалуйста, убедитесь, что вы предоставили пользователю этого Принципала услуги роль не менее Reader в вашей подписке Azure. Я считаю, что вы получаете эту ошибку, потому что у этого пользователя нет доступа к вашей подписке Azure.

Пожалуйста, просмотрите эту ссылку: https://azure.microsoft.com/en-in/documentation/articles/role-based-access-control-configure/ (Manage access using the Azure Management Portal раздел) о том, как вы можете назначить роль.

+0

Спасибо, я добавил приложение в качестве вкладчика, и 403 ушел. Теперь я получаю файл 404, который не найден. –

+0

Вы должны получить более подробную информацию о самой ошибке. Не могли бы вы поделиться этими подробностями? –

+0

Это исключение: java.io.FileNotFoundException: https://management.azure.com/subscriptions/758ad253-cbf5-4b18-8863-3eed0825bf07/providers/Microsoft.Commerce/RateCard?api-version=2015-06- 01-просмотр% 26% 24filter% 3DOfferDurableId + Eq +% 27MS-АЗР-0003p% 27 + и + валюты + Eq +% 27USD% 27 + и + Язык + Eq +% 27en-США% 27 + и + RegionInfo + Eq +% 27US% 27 –

0

Как мы не можем назвать использование & Оценить API-интерфейсы карточек через сертификат с запросами HTTPS.Как упоминалось:

Все задачи, которые вы делаете на ресурсы с помощью Azure Resource Manager должен пройти проверку подлинности с Azure Active Directory

на Authenticating Azure Resource Manager requests.

Итак, у вас есть проблема 403.

Попробуйте создать общий HTTP-запрос для API REST с заголовком запроса Content-Type и Authorization, который указан на Resource Usage (Preview).

Также вы можете проверить, чтобы получить информацию, которую Вы хотите в запросе HTTP инструмент для сборки, как:

enter image description here

А вот аналогичная нить How to use Management certificate based authentication for making REST API calls to Azure? для справки.

0

Для файла не нашел ответ:

java.io.FileNotFoundException:

https://management.azure.com/subscriptions/758ad253-cbf5-4b18-8863-3eed082xxxxx/providers/Microsoft.Commerce/RateCard?api-version=2015-06-01-preview%26%24filter%3DOfferDurableId+eq+%27MS-AZR-0003p%27+and+Currency+eq+%27USD%27+and+Locale+eq+%27en-US%27+and+RegionInfo+eq+%27US%27

HTTP/1.1 404 Not Found

[1] Cache-Control: нет -cache

[2] Pragma: no-cache

[3] Content-Type: application/json; кодировка = UTF-8

[4] Expires: -1

[5] X-MS-Failure-Cause: Шлюз

[6] X-MS-запрос-ID: 8bd5ea3a-5a5f -4eb5-86b5-bd6581f94e00

[7] X-MS-корреляции-запрос-ID: 8bd5ea3a-5a5f-4eb5-86b5-bd6581f94e00

[8] X-MS-маршрутизации запроса-ID: EASTUS : 20151119T181954Z: 8bd5ea3a-5a5f-4eb5-86b5-bd6581f94e00

[9] Strict-Transport-Security: max-age = 31536000; IncludeSubdomains

[10] Дата: Чт, 19 ноября 2015 18:19:53 GMT

[11] Content-Length: 348

Позвольте мне посмотреть, что еще я могу получить ...

Смежные вопросы