Выполнение запросов API к Azure Stack HubMake API requests to Azure Stack Hub

REST API Azure Stack Hub можно использовать для автоматизации таких операций, как добавление виртуальной машины в облако Azure Stack Hub.You can use the Azure Stack Hub REST APIs to automate operations such as adding a virtual machine (VM) to your Azure Stack Hub cloud.

Чтобы использовать такие API, клиенту нужно выполнить аутентификацию в конечной точке входа Microsoft Azure.The APIs require your client to authenticate to the Microsoft Azure sign-in endpoint. Эта конечная точка возвращает маркер, который нужно указать в заголовке каждого запроса к API Azure Stack Hub.The endpoint returns a token to use in the header of every request sent to the Azure Stack Hub APIs. Microsoft Azure использует OAuth 2.0.Microsoft Azure uses Oauth 2.0.

В этой статье приведены примеры, в которых для создания запросов к Azure Stack Hub используется служебная программа cURL.This article provides examples that use the cURL utility to create Azure Stack Hub requests. cURL является средством командной строки с библиотекой для передачи данных.cURL is a command-line tool with a library for transferring data. В этих примерах описан процесс получения маркера для доступа к интерфейсам API Azure Stack Hub.These examples describe the process of retrieving a token to access the Azure Stack Hub APIs. Большинство языков программирования предоставляет библиотеки OAuth 2.0, в которых реализованы надежные возможности управления маркерами и обработки таких задач, как обновление маркеров.Most programming languages provide Oauth 2.0 libraries, which have robust token management and handle tasks such as refreshing the token.

Изучив полный процесс применения REST API Azure Stack Hub с универсальным клиентом REST на примере cURL, вы сможете составить представление о базовых запросах и полезных данных, которые можно получить в ответ на них.Review the entire process of using the Azure Stack Hub REST APIs with a generic REST client, such as cURL, to help you understand the underlying requests and what you can expect in a response payload.

В этой статье не рассматриваются некоторые методы получения маркеров, например интерактивный вход или создание выделенных идентификаторов приложений.This article does not explore all the options available for retrieving tokens, such as interactive sign-in or creating dedicated app IDs. Сведения на эту тему см. в справочнике по REST API Azure.For information about these topics, see the Azure REST API reference.

Получение маркера от AzureGet a token from Azure

Чтобы получить маркер доступа, создайте текст запроса, отформатированный с использованием типа содержимого x-www-form-urlencoded.Create a request body formatted using the content type x-www-form-urlencoded to obtain an access token. Отправьте его в запросе POST в конечную точку REST для аутентификации и входа в Azure.POST your request to the Azure REST authentication and login endpoint.

URIURI

POST https://login.microsoftonline.com/{tenant id}/oauth2/token

Идентификатор клиента может иметь следующие значения:Tenant ID is either:

  • Ваш домен клиента, такой как fabrikam.onmicrosoft.comYour tenant domain, such as fabrikam.onmicrosoft.com
  • Идентификатор клиента, такой как 8eaed023-2b34-4da1-9baa-8bc8c9d6a491Your tenant ID, such as 8eaed023-2b34-4da1-9baa-8bc8c9d6a491
  • Значение по умолчанию для ключей, не привязанных к конкретному клиенту, commonDefault value for tenant-independent keys: common

Текст запроса POSTPost Body

grant_type=password
&client_id=1950a258-227b-4e31-a9cf-717495945fc2
&resource=https://contoso.onmicrosoft.com/4de154de-f8a8-4017-af41-df619da68155
&username=admin@fabrikam.onmicrosoft.com
&password=Password123
&scope=openid

Описание значений:For each value:

  • grant_typegrant_type:
    Тип схемы аутентификации, которую вы будете использовать.The type of authentication scheme you'll use. В этом примере используется значение password.In this example, the value is password.

  • resourceresource:
    Ресурс, к которому маркер предоставляет доступ.The resource the token accesses. Ресурс можно узнать с помощью запроса к конечной точке метаданных управления Azure Stack Hub.You can find the resource by querying the Azure Stack Hub management metadata endpoint. Нужные данные содержатся в разделе audiences.Look at the audiences section.

  • Конечная точка управления Azure Stack HubAzure Stack Hub management endpoint:

    https://management.{region}.{Azure Stack Hub domain}/metadata/endpoints?api-version=2015-01-01
    

    Примечание

    Если вам, как администратору, нужен доступ к API клиента, обязательно используйте конечную точку клиента, например https://adminmanagement.{region}.{Azure Stack Hub domain}/metadata/endpoints?api-version=2015-01-011.If you are an admin trying to access the tenant API, make sure to use the tenant endpoint; for example, https://adminmanagement.{region}.{Azure Stack Hub domain}/metadata/endpoints?api-version=2015-01-011.

    Пример для конечной точки на основе Пакета средств разработки Azure Stack приведен ниже:For example, with the Azure Stack Development Kit as an endpoint:

    curl 'https://management.local.azurestack.external/metadata/endpoints?api-version=2015-01-01'
    

    Ответ:Response:

    {
    "galleryEndpoint":"https://adminportal.local.azurestack.external:30015/",
    "graphEndpoint":"https://graph.windows.net/",
    "portalEndpoint":"https://adminportal.local.azurestack.external/",
    "authentication":{
       "loginEndpoint":"https://login.windows.net/",
       "audiences":["https://contoso.onmicrosoft.com/4de154de-f8a8-4017-af41-df619da68155"]
       }
    }
    

ПримерExample

https://contoso.onmicrosoft.com/4de154de-f8a8-4017-af41-df619da68155
  • client_idclient_id

    Для этого параметра жестко задано значение по умолчанию:This value is hardcoded to a default value:

    1950a258-227b-4e31-a9cf-717495945fc2
    

    Для альтернативных сценариев доступны другие варианты:Alternative options are available for specific scenarios:

    ПриложениеApplication ApplicationIDApplicationID
    LegacyPowerShellLegacyPowerShell 0a7bdc5c-7b57-40be-9939-d4c5fc7cd4170a7bdc5c-7b57-40be-9939-d4c5fc7cd417
    PowerShellPowerShell 1950a258-227b-4e31-a9cf-717495945fc21950a258-227b-4e31-a9cf-717495945fc2
    WindowsAzureActiveDirectoryWindowsAzureActiveDirectory 00000002-0000-0000-c000-00000000000000000002-0000-0000-c000-000000000000
    VisualStudioVisualStudio 872cd9fa-d31f-45e0-9eab-6e460a02d1f1872cd9fa-d31f-45e0-9eab-6e460a02d1f1
    AzureCLIAzureCLI 04b07795-8ddb-461a-bbee-02f9e1bf7b4604b07795-8ddb-461a-bbee-02f9e1bf7b46
  • usernameusername

    Например, учетная запись Azure AD Azure Stack Hub:For example, the Azure Stack Hub Azure AD account:

    azurestackadmin@fabrikam.onmicrosoft.com
    
  • passwordpassword

    Пароль администратора Azure AD Azure Stack Hub.The Azure Stack Hub Azure AD admin password.

ПримерExample

Запрос:Request:

curl -X "POST" "https://login.windows.net/fabrikam.onmicrosoft.com/oauth2/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "client_id=1950a258-227b-4e31-a9cf-717495945fc2" \
--data-urlencode "grant_type=password" \
--data-urlencode "username=admin@fabrikam.onmicrosoft.com" \
--data-urlencode 'password=Password12345' \
--data-urlencode "resource=https://contoso.onmicrosoft.com/4de154de-f8a8-4017-af41-df619da68155"

Ответ:Response:

{
  "token_type": "Bearer",
  "scope": "user_impersonation",
  "expires_in": "3599",
  "ext_expires_in": "0",
  "expires_on": "1512574780",
  "not_before": "1512570880",
  "resource": "https://contoso.onmicrosoft.com/4de154de-f8a8-4017-af41-df619da68155",
  "access_token": "eyJ0eXAiOi...truncated for readability..."
}

Запросы к APIAPI queries

Получив маркер доступа, указывайте его в заголовке каждого запроса к API.Once you get the access token, add it as a header to each of your API requests. Чтобы добавить его в качестве заголовка, создайте заголовок authorization со значением Bearer <access token>.To add it as a header, create an authorization header with the value: Bearer <access token>. Пример:For example:

Запрос:Request:

curl -H "Authorization: Bearer eyJ0eXAiOi...truncated for readability..." 'https://adminmanagement.local.azurestack.external/subscriptions?api-version=2016-05-01'

Ответ:Response:

offerId : /delegatedProviders/default/offers/92F30E5D-F163-4C58-8F02-F31CFE66C21B
id : /subscriptions/800c4168-3eb1-406b-a4ca-919fe7ee42e8
subscriptionId : 800c4168-3eb1-406b-a4ca-919fe7ee42e8
tenantId : 9fea4606-7c07-4518-9f3f-8de9c52ab628
displayName : Default Provider Subscription
state : Enabled
subscriptionPolicies : @{locationPlacementId=AzureStack}

Структура URL-адреса и синтаксис запросовURL structure and query syntax

Стандартный URI запроса состоит из: {URI-scheme} :// {URI-host} / {resource-path} ? {query-string}Generic request URI, consists of: {URI-scheme} :// {URI-host} / {resource-path} ? {query-string}

  • Схема URI:URI scheme:
    URI, обозначающий протокол для отправки запроса.The URI indicates the protocol used to send the request. Например, http или https.For example, http or https.
  • Узел URI:URI host:
    узел обозначает доменное имя или IP-адрес сервера, на котором размещается конечная точка REST, например graph.microsoft.com или adminmanagement.local.azurestack.external.The host specifies the domain name or IP address of the server where the REST service endpoint is hosted, such as graph.microsoft.com or adminmanagement.local.azurestack.external.
  • Путь к ресурсу:Resource path:
    путь однозначно определяет ресурс или коллекцию ресурсов и может содержать несколько сегментов, которые служба использует для идентификации нужных ресурсов.The path specifies the resource or resource collection, which may include multiple segments used by the service in determining the selection of those resources. Например: beta/applications/00003f25-7e1f-4278-9488-efc7bac53c4a/owners запрашивает список владельцев определенного приложения в коллекции приложений.For example: beta/applications/00003f25-7e1f-4278-9488-efc7bac53c4a/owners can be used to query the list a specific application's owners within the applications collection.
  • Строка запроса:Query string:
    эта строка предоставляет дополнительные простые параметры, например нужную версию API или критерий для фильтрации ресурсов.The string provides additional simple parameters, such as the API version or resource selection criteria.

Конструкция URI для запроса к Azure Stack HubAzure Stack Hub request URI construct

{URI-scheme} :// {URI-host} / {subscription id} / {resource group} / {provider} / {resource-path} ? {OPTIONAL: filter-expression} {MANDATORY: api-version}

Синтаксис URIURI syntax

https://adminmanagement.local.azurestack.external/{subscription id}/resourcegroups/{resource group}/providers/{provider}/{resource-path}?{api-version}

Пример URI запросаQuery URI example

https://adminmanagement.local.azurestack.external/subscriptions/800c4168-3eb1-406b-a4ca-919fe7ee42e8/resourcegroups/system.local/providers/microsoft.infrastructureinsights.admin/regionhealths/local/Alerts?$filter=(Properties/State eq 'Active') and (Properties/Severity eq 'Critical')&$orderby=Properties/CreatedTimestamp desc&api-version=2016-05-01"

Дальнейшие действияNext steps

Дополнительные сведения об использовании конечных точек REST в Azure см. в Справочнике по REST API Azure.For more information about using the Azure REST endpoints, see the Azure REST API Reference.