Я потратил несколько дней, пытаясь понять это, глядя на всю информацию, которую я мог найти на веб-сайте 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");
}
Любые предложения о том, как отладить проблему?
Спасибо, я добавил приложение в качестве вкладчика, и 403 ушел. Теперь я получаю файл 404, который не найден. –
Вы должны получить более подробную информацию о самой ошибке. Не могли бы вы поделиться этими подробностями? –
Это исключение: 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 –