Выполнение запросов 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.com
Your tenant domain, such asfabrikam.onmicrosoft.com
- Идентификатор клиента, такой как
8eaed023-2b34-4da1-9baa-8bc8c9d6a491
Your tenant ID, such as8eaed023-2b34-4da1-9baa-8bc8c9d6a491
- Значение по умолчанию для ключей, не привязанных к конкретному клиенту,
common
Default 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 ispassword
.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
orhttps
. - Узел 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 asgraph.microsoft.com
oradminmanagement.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.