2015-10-05 4 views
1

Я пытаюсь получить информацию об использовании и рейтинге карт от Microsoft Azure с помощью приложения java, и я понял, что могу использовать сертификат управления для аутентификации для совершения звонков в Microsoft Azure.Как использовать аутентификацию на основе сертификата на основе сертификата для вызова API REST в Azure?

Я получил сертификат управления из файла .publishsettings я получил от here

Однако в AuthenticationContext, я не вижу какой-либо метод, который использует этот сертификат, чтобы получить маркер доступа, необходимые для создания и использования скорости API звонки.

Я пробовал ссылаться на this answer, но я не вижу никаких клиентов, доступных для использования и тарифной карты, и ответ относится к ManagementClient, что не относится к моей учетной записи. Я также упоминал об этом блоге, который ссылается на ClientAssertionCertificate, чего я не вижу в java library for adal.

NB: Я могу сделать REST API вызовы Azure для получения использования и прейскурант информации, используя имя пользователя, пароль & идентификатор клиента на основе механизма проверки подлинности, но я хотел бы использовать этот механизм сертификата управления, так как пользователи моего приложения могут не доверять этому приложению своими учетными данными, и этот механизм, основанный на сертификате, кажется более простым в использовании с точки зрения пользователя.

ответ

1

Однако в AuthenticationContext я не вижу никакого метода, который использует этот сертификат для получения токена доступа, необходимого для использования и тарификации вызовов API.

Я также упомянул об этом блоге, который ссылается на ClientAssertionCertificate, которого я не вижу в java-библиотеке для adal.

Как сказал Гаурав, мы можем только позвонить по телефону & Оценить API-интерфейс карты с использованием Azure Active Directory для аутентификации. Вы можете использовать AuthenticationContext для получения access_token в качестве следующего кода. Вам необходимо предоставить client ID и Client Secret (key).

private AuthenticationResult getAccessTokenFromClientCredentials() 
      throws Throwable { 
     AuthenticationContext context = null; 
     AuthenticationResult result = null; 
     ExecutorService service = null; 
     try { 
      service = Executors.newFixedThreadPool(1); 
      context = new AuthenticationContext(authority + tenant + "/", true, 
        service); 
      Future<AuthenticationResult> future = context.acquireToken(
        "https://graph.windows.net", new ClientCredential(clientId, 
          clientSecret), null); 
      result = future.get(); 
     } catch (ExecutionException e) { 
      throw e.getCause(); 
     } finally { 
      service.shutdown(); 
     } 

     if (result == null) { 
      throw new ServiceUnavailableException(
        "authentication result was null"); 
     } 
     return result; 
    } 

NB: Я могу сделать REST API вызовы Azure для получения использования и прейскурант информации, используя имя пользователя, пароль & идентификатора клиента механизм аутентификации на основе, .....

Кажется, что мы не можем использовать механизм управления сертификатом для вызова Usage & Rate Card API. Поскольку этот вызывающий пользователь или директор службы является членом Owner, Contributor or Reader role у арендатора Azure AD для запрошенной подписки (see this document). Я рекомендую вам обратиться к этому документу о том, как authenticate Azure Resource Management.

1

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

Сертификат руководства может использоваться только для Service Management APIs.

+0

Означает ли это, что нет другого способа, кроме как получить имя пользователя и пароль пользователя для получения данных из API использования и тарифной карты? – jobin

+0

Это правильно. ИМХО, это правильный способ сделать что-то.При подходе к сертификату управления, по сути, лицо, обладающее сертификатом, имеет полный контроль над вашей подпиской на Azure. При таком подходе вы получаете контроль доступа на основе ролей, чтобы вы могли предоставлять подробные разрешения пользователям в вашей подписке Azure. –

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