Поделиться через


Как использовать симметричные ключи по протоколу HTTPS без пакета SDK

В этой статье описано, как подготовить устройство с помощью симметричного ключа по протоколу HTTPS без использования пакета SDK для устройств Azure IoT DPS. Большинство языков предоставляют библиотеки для отправки HTTP-запросов, но вместо того, чтобы сосредоточиться на определенном языке, в этой статье вы будете использовать средство командной строки cURL для отправки и получения по протоколу HTTPS.

Действия, описанные в этой статье, можно выполнить на компьютере Под управлением Linux или Windows. Если вы работаете на подсистема Windows для Linux (WSL) или работаете на компьютере Linux, вы можете ввести все команды в локальной системе в командной строке Bash. Если вы работаете в Windows, введите все команды в локальной системе в командной строке GitBash.

В этой статье существуют различные пути в зависимости от типа записи регистрации, используемой вами. После установки необходимых компонентов перед продолжением работы ознакомьтесь с обзором.

Необходимые компоненты

  • Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

  • Выполните инструкции по настройке Службы подготовки устройств к добавлению в Центр Интернета вещей на портале Microsoft Azure.

  • Убедитесь, что на компьютере установлен Python 3.7 или более поздней версии. Вы можете проверить версию Python, выполнив команду python --version.

  • Если вы работаете в Windows, установите последнюю версию Git. Обязательно добавьте GIT в переменные среды, доступные в командном окне. Последнюю версию средств git для установки, которая включает Git Bash (приложение командной строки для взаимодействия с локальным репозиторием GIT), можно найти на этой странице. В Windows вы введете все команды в локальной системе в командной строке GitBash.

  • Azure CLI. В этой статье описано два варианта выполнения команд Azure CLI:

    • Azure Cloud Shell — интерактивная оболочка CLI, которая работает в браузере. Этот вариант предпочтителен, так как не нужно ничего устанавливать. Если вы впервые используете Cloud Shell, войдите на портал Azure. Выполните действия, описанные в кратком руководстве Cloud Shell, чтобы запустить Cloud Shell и выбрать среду Bash.
    • Azure CLI также можно запустить на локальном компьютере. Если интерфейс командной строки Azure уже установлен, запустите az upgrade, чтобы обновить интерфейс командной строки и расширения до текущей версии. Чтобы установить Azure CLI, ознакомьтесь с разделом Установка Azure CLI.
  • Если вы работаете в среде Linux или WSL, откройте строку Bash для локального выполнения команд. Если вы работаете в среде Windows, откройте запрос GitBash.

Обзор

В этой статье можно использовать отдельную регистрацию или группу регистрации для подготовки через DPS.

  • Для отдельной регистрации выполните отдельную регистрацию.

  • Для группы регистрации выполните инструкции по использованию группы регистрации.

После создания записи отдельной регистрации или группы регистрации перейдите к созданию маркера SAS и регистрации устройства в DPS.

Использование отдельной регистрации

Если вы хотите создать новую индивидуальную регистрацию, используемую для этой статьи, можно использовать команду az iot dps enrollment create , чтобы создать отдельную регистрацию для аттестации симметричного ключа.

Следующая команда создает запись регистрации с политикой выделения по умолчанию для экземпляра DPS и позволяет DPS назначать первичные и вторичные ключи для устройства:

az iot dps enrollment create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --attestation-type symmetrickey
  • Замените имя группы ресурсов и экземпляра DPS.

  • Идентификатор регистрации — это идентификатор регистрации для устройства. Идентификатор регистрации — это нечувствительная строка регистра (до 128 символов длиной) буквенно-цифровых символов, а также специальные символы: '-', '.', '_'. ':' Последний символ должен быть буквенно-цифровым или дефисом ('-'). Убедитесь, что идентификатор регистрации, используемый в команде, соответствует этому формату.

Назначенные симметричные ключи возвращаются в свойстве аттестации в ответе:


{
  "allocationPolicy": null,
  "attestation": {
    "symmetricKey": {
      "primaryKey": "G3vn0IZH9oK3d4wsxFpWBtd2KUrtjI+39dZVRf26To8w9OX0LaFV9yZ93ELXY7voqHEUsNhnb9bt717UP87KxA==",
      "secondaryKey": "4lNxgD3lUAOEOied5/xOocyiUSCAgS+4b9OvXLDi8ug46/CJzIn/3rN6Ys6gW8SMDDxMQDaMRnIoSd1HJ5qn/g=="
    },
    "tpm": null,
    "type": "symmetricKey",
    "x509": null
  },

  ...

}

Запишите первичный ключ и идентификатор регистрации (идентификатор регистрации) для записи отдельной регистрации, используйте их далее в этой статье.

Если вы хотите использовать существующую индивидуальную регистрацию для этой статьи, вы можете получить первичный ключ с помощью команды az iot dps enrollment show :

az iot dps enrollment show -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --show-keys true

Использование группы регистрации

Если вы хотите создать новую группу регистрации, используемую для этой статьи, можно использовать команду az iot dps enrollment-group , чтобы создать группу регистрации для аттестации симметричного ключа.

Следующая команда создает запись группы регистрации с политикой выделения по умолчанию для экземпляра DPS и позволяет DPS назначать первичные и вторичные ключи для группы регистрации:

az iot dps enrollment-group create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id}
  • Замените имя группы ресурсов и экземпляра DPS.

  • Идентификатор регистрации — это нечувствительная строка регистра (до 128 символов длиной) буквенно-цифровых символов, а также специальные символы: '-', '.', '_'. ':' Последний символ должен быть буквенно-цифровым или дефисом ('-'). Это может быть любое имя, используемое для группы регистрации.

Назначенные симметричные ключи возвращаются в свойстве аттестации в ответе:


{
  "allocationPolicy": null,
  "attestation": {
    "symmetricKey": {
      "primaryKey": "G3vn0IZH9oK3d4wsxFpWBtd2KUrtjI+39dZVRf26To8w9OX0LaFV9yZ93ELXY7voqHEUsNhnb9bt717UP87KxA==",
      "secondaryKey": "4lNxgD3lUAOEOied5/xOocyiUSCAgS+4b9OvXLDi8ug46/CJzIn/3rN6Ys6gW8SMDDxMQDaMRnIoSd1HJ5qn/g=="
    },
    "tpm": null,
    "type": "symmetricKey",
    "x509": null
  },

  ...

}

Запишите первичный ключ.

Если вы хотите использовать существующую индивидуальную регистрацию для этой статьи, вы можете получить первичный ключ с помощью команды az iot dps enrollment-group show :

az iot dps enrollment-group show -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --show-keys true

Получение ключа устройства

При использовании аттестации симметричного ключа с групповыми регистрациями вы не используете ключи группы регистрации напрямую. Вместо этого вы наследуете уникальный ключ для каждого устройства из ключа группы регистрации. Дополнительные сведения см. в разделе "Регистрация групп" с симметричными ключами.

В этом разделе вы создадите ключ устройства из первичного ключа группы регистрации, чтобы вычислить HMAC-SHA256 уникального идентификатора регистрации для устройства. Затем результат будет преобразован в формат Base64.

  1. Создайте уникальный ключ с помощью opensl. Вы будете использовать следующий скрипт оболочки Bash. Замените {primary-key} первичный ключ группы регистрации, скопированный ранее, и замените {contoso-simdevice}его идентификатором регистрации, который вы хотите использовать для устройства. Идентификатор регистрации — это нечувствительная строка регистра (до 128 символов длиной) буквенно-цифровых символов, а также специальные символы: '-', '.', '_'. ':' Последний символ должен быть буквенно-цифровым или дефисом ('-').

    KEY={primary-key}
    REG_ID={contoso-simdevice}
    
    keybytes=$(echo $KEY | base64 --decode | xxd -p -u -c 1000)
    echo -n $REG_ID | openssl sha256 -mac HMAC -macopt hexkey:$keybytes -binary | base64
    
  2. Скрипт выдаст примерно следующий ключ:

    p3w2DQr9WqEGBLUSlFi1jPQ7UWQL4siAGy75HFTFbf8=
    

Запишите производный ключ устройства и идентификатор регистрации, который вы использовали для его создания, используйте их в следующем разделе.

Вы также можете использовать Azure CLI или PowerShell для получения ключа устройства. Дополнительные сведения см. в разделе "Производный ключ устройства".

Создание маркера SAS

При использовании аттестации симметричного ключа устройства проходят проверку подлинности с помощью DPS с помощью маркера подписанного URL-адреса (SAS). Для устройств, подготавливающихся с помощью отдельной регистрации, маркер подписывается с помощью первичного или вторичного ключа в записи регистрации. Для подготовки устройств с помощью группы регистрации маркер подписывается с помощью производного ключа устройства, который, в свою очередь, был создан с помощью первичного или вторичного ключа в записи группы регистрации. Маркер указывает время истечения срока действия и URI целевого ресурса.

Для создания маркера SAS можно использовать следующий скрипт Python:

from base64 import b64encode, b64decode
from hashlib import sha256
from time import time
from urllib.parse import quote_plus, urlencode
from hmac import HMAC

def generate_sas_token(uri, key, policy_name, expiry=3600):
     ttl = time() + expiry
     sign_key = "%s\n%d" % ((quote_plus(uri)), int(ttl))
     print(sign_key)
     signature = b64encode(HMAC(b64decode(key), sign_key.encode('utf-8'), sha256).digest())

     rawtoken = {
         'sr' :  uri,
         'sig': signature,
         'se' : str(int(ttl))
     }

     if policy_name is not None:
         rawtoken['skn'] = policy_name

     return 'SharedAccessSignature ' + urlencode(rawtoken)

uri = '[resource_uri]'
key = '[device_key]'
expiry = [expiry_in_seconds]
policy= '[policy]'

print(generate_sas_token(uri, key, policy, expiry))

Где:

  • [resource_uri] — URI ресурса, к которым вы пытаетесь получить доступ с помощью этого маркера. Для DPS это форма [dps_id_scope]/registrations/[dps_registration_id], где [dps_id_scope] находится область идентификатора экземпляра DPS и [dps_registration_id] является идентификатором регистрации, используемым для устройства.

    Область идентификатора для экземпляра DPS можно получить из области обзора экземпляра в портал Azure или использовать команду az iot dps (замените заполнители именем группы ресурсов и экземпляра DPS):

    az iot dps show -g {resource_group_name} --name {dps_name}
    
  • [device_key] — это ключ устройства, связанный с устройством. Этот ключ является либо указанным, либо автоматически созданным для вас в отдельной регистрации, либо производным ключом для регистрации группы.

    • Если вы используете отдельную регистрацию, используйте первичный ключ, сохраненный в Use an individual enrollment.

    • Если вы используете группу регистрации, используйте производный ключ устройства, созданный в группе регистрации.

  • [expiry_in_seconds] — это срок действия этого маркера SAS в секундах.

  • [policy] — это политика, с которой связан ключ устройства. Для регистрации устройств DPS политика жестко закодирована на "регистрацию".

Пример набора входных данных для устройства, вызываемого my-symkey-device с сроком действия 30 дней, может выглядеть следующим образом.

uri = '0ne00111111/registrations/my-symkey-device'
key = '18RQk/hOPJR9EbsJlk2j8WA6vWaj/yi+oaYg7zmxfQNdOyMSu+SJ8O7TSlZhDJCYmn4rzEiVKIzNiVAWjLxrGA=='
expiry = 2592000
policy='registration'

Измените скрипт для экземпляра устройства и DPS и сохраните его в виде файла Python; например, generate_token.py. Запустите скрипт, например python generate_token.py. Он должен вывести маркер SAS, аналогичный следующему:

0ne00111111%2Fregistrations%2Fmy-symkey-device
1663952627
SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration

Скопируйте и сохраните всю строку, начинающуюся с SharedAccessSignature. Эта строка является маркером SAS. Он понадобится в следующих разделах.

Дополнительные сведения об использовании маркеров SAS с DPS и их структурой см. в статье "Управление доступом к DPS с помощью SAS".

Зарегистрировать устройство

Вы вызываете REST API регистрации устройств для подготовки устройства с помощью DPS.

Используйте следующую команду curl:

curl -L -i -X PUT -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -H 'Authorization: [sas_token]' -d '{"registrationId": "[registration_id]"}' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31

Где:

  • -L сообщает curl, чтобы следовать перенаправлениям HTTP.

  • –i указывает curl включить заголовки протокола в выходные данные. Эти заголовки не являются строго необходимыми, но они могут быть полезны.

  • -X PUT сообщает curl, что это команда HTTP PUT. Требуется для этого вызова API.

  • -H 'Content-Type: application/json' сообщает DPS, что мы публикуем содержимое JSON и должны быть "application/json".

  • -H 'Content-Encoding: utf-8' сообщает DPS кодировке, которую мы используем для нашего текста сообщения. Задайте правильное значение для операционной системы или клиента; однако обычно это utf-8.

  • -H 'Authorization: [sas_token]' сообщает DPS пройти проверку подлинности с помощью маркера SAS. Замените [sas_token] маркером, созданным в создании маркера SAS.

  • -d '{"registrationId": "[registration_id]"}'–d Параметр — это "данные" или текст сообщения, которое мы публикуем. Он должен быть JSON в виде "{"registrationId":"[registration_id"}". Обратите внимание, что для curl он упакован в одинарные кавычки; в противном случае необходимо экранировать двойные кавычки в формате JSON.

  • Наконец, последний параметр — это URL-адрес для публикации. Для "обычных" (т. е. не локальных) DPS используется глобальная конечная точка DPS, global.azure-devices-provisioning.net. https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31 Обратите внимание, что необходимо заменить [dps_scope_id] и [registration_id] с соответствующими значениями.

Например:

curl -L -i -X PUT -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -H 'Authorization: SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration' -d '{"registrationId": "my-symkey-device"}' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-symkey-device/register?api-version=2021-06-01

Успешный вызов будет иметь ответ, аналогичный следующему:

HTTP/1.1 202 Accepted
Date: Wed, 31 Aug 2022 22:02:49 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Location: https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-symkey-device/register
Retry-After: 3
x-ms-request-id: a021814f-0cf6-4ce9-a1e9-ead7eb5118d9
Strict-Transport-Security: max-age=31536000; includeSubDomains

{"operationId":"5.316aac5bdc130deb.b1e02da8-c3a0-4ff2-a121-7ea7a6b7f550","status":"assigning"}

Ответ содержит идентификатор операции и состояние. В этом случае для состояния задано assigningзначение . Регистрация DPS— это, возможно, длительная операция, поэтому она выполняется асинхронно. Как правило, вы будете опрашивать состояние с помощью REST API поиска состояния операции, чтобы определить, было ли назначено устройство или произошла ли сбой.

Допустимые значения состояния для DPS:

  • assigned: возвращаемое значение из вызова состояния указывает, что Центр Интернета вещей устройство было назначено.

  • assigning: операция по-прежнему выполняется.

  • disabled: запись регистрации отключена в DPS, поэтому устройство не может быть назначено.

  • failed: сбой назначения. В ответе будет errorCode возвращен и errorMessage возвращен registrationState в записи, чтобы указать, что не удалось.

  • unassigned

Чтобы вызвать API подстановки состояния операции, используйте следующую команду curl:

curl -L -i -X GET -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -H 'Authorization: [sas_token]' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/operations/[operation_id]?api-version=2019-03-31

Вы будете использовать ту же область идентификатора, идентификатор регистрации и маркер SAS, что и в запросе на регистрацию устройства . Используйте идентификатор операции, возвращенный в ответе регистрации устройства .

Например:

curl -L -i -X GET -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -H 'Authorization: SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-symkey-device/operations/5.316aac5bdc130deb.f4f1828c-4dab-4ca9-98b2-dfc63b5835d6?api-version=2021-06-01

В следующих выходных данных показан ответ на устройство, которое было успешно назначено. Обратите внимание, что это свойство и registrationState.assignedHub что status свойство assigned задано в Центре Интернета вещей, где было подготовлено устройство.

HTTP/1.1 200 OK
Date: Wed, 31 Aug 2022 22:05:23 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
x-ms-request-id: ffb98d42-023e-4e75-afb0-1807ff091cbb
Strict-Transport-Security: max-age=31536000; includeSubDomains

{
   "operationId":"5.316aac5bdc130deb.b1e02da8-c3a0-4ff2-a121-7ea7a6b7f550",
   "status":"assigned",
   "registrationState":{
      "registrationId":"my-symkey-device",
      "createdDateTimeUtc":"2022-08-31T22:02:50.5163352Z",
      "assignedHub":"MyExampleHub.azure-devices.net",
      "deviceId":"my-symkey-device",
      "status":"assigned",
      "substatus":"initialAssignment",
      "lastUpdatedDateTimeUtc":"2022-08-31T22:02:50.7370676Z",
      "etag":"IjY5MDAzNTUyLTAwMDAtMDMwMC0wMDAwLTYzMGZkYThhMDAwMCI="
   }
}

Отправка сообщения телеметрии

Прежде чем отправлять сообщение телеметрии, необходимо создать маркер SAS для Центра Интернета вещей, которому было назначено устройство. Вы подписываете этот маркер с помощью того же первичного ключа или производного ключа устройства, который использовался для подписи маркера SAS для экземпляра DPS.

Создание маркера SAS для Центра Интернета вещей

Чтобы создать маркер SAS, можно выполнить тот же код, который вы сделали для создания маркера для экземпляра DPS со следующими изменениями:

uri = '[resource_uri]'
key = '[device_key]'
expiry = [expiry_in_seconds]
policy= None

Где:

  • [resource_uri] — URI ресурса, к которым вы пытаетесь получить доступ с помощью этого маркера. Для устройства, отправляющего сообщения в Центр Интернета вещей, это форма [iot-hub-host-name]/devices/[device-id].

    • Для [iot-hub-host-name]этого используйте имя узла Центр Интернета вещей, возвращаемое в assignedHub свойстве в предыдущем разделе.

    • Для [device-id]этого используйте идентификатор устройства, возвращенный в deviceId свойстве в предыдущем разделе.

  • [device_key] — это ключ устройства, связанный с устройством. Этот ключ является либо указанным, либо автоматически созданным для вас в отдельной регистрации, либо производным ключом для регистрации группы. (Это тот же ключ, который использовался ранее для создания маркера для DPS.)

    • Если вы используете отдельную регистрацию, используйте первичный ключ, сохраненный в Use an individual enrollment.

    • Если вы используете группу регистрации, используйте производный ключ устройства, созданный в группе регистрации.

  • [expiry_in_seconds] — это срок действия этого маркера SAS в секундах.

  • policy=None Для устройства, отправляющего данные телеметрии в Центр Интернета вещей, политика не требуется, поэтому этот параметр имеет значение None.

Пример набора входных данных для устройства, вызываемого my-symkey-device отправкой в Центр Интернета вещей с MyExampleHub периодом действия маркера в течение одного часа, может выглядеть следующим образом:

uri = 'MyExampleHub.azure-devices.net/devices/my-symkey-device'
key = '18RQk/hOPJR9EbsJlk2j8WA6vWaj/yi+oaYg7zmxfQNdOyMSu+SJ8O7TSlZhDJCYmn4rzEiVKIzNiVAWjLxrGA=='
expiry = 3600
policy= None

В следующих выходных данных показан пример маркера SAS для этих входных данных:

SharedAccessSignature sr=MyExampleHub.azure-devices.net%2Fdevices%2Fmy-symkey-device&sig=f%2BwW8XOKeJOtiPc9Iwjc4OpExvPM7NlhM9qxN2a1aAM%3D&se=1663119026

Дополнительные сведения о создании маркеров SAS для Центр Интернета вещей, включая пример кода на других языках программирования, см. в статье "Управление доступом к Центр Интернета вещей с помощью подписанных URL-адресов".

Примечание.

В качестве удобства можно использовать команду azure CLI az iot hub generate-sas-token, чтобы получить маркер SAS для устройства, зарегистрированного в Центре Интернета вещей. Например, следующая команда создает маркер SAS с длительностью в течение одного часа. {iothub_name}Для этого требуется только первая часть хозяйки, напримерMyExampleHub.

az iot hub generate-sas-token -d {device_id} -n {iothub_name}

Отправка данных в Центр Интернета вещей

Вызовите REST API событий устройства Центр Интернета вещей для отправки телеметрии на устройство.

Используйте следующую команду curl:

curl -L -i -X POST -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -H 'Authorization: [sas_token]' -d '{"temperature": 30}' https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13

Где:

  • -X POST сообщает curl, что это команда HTTP POST. Требуется для этого вызова API.

  • -H 'Content-Type: application/json'сообщает Центр Интернета вещей, что мы публикуем содержимое JSON и должны быть "application/json".

  • -H 'Content-Encoding: utf-8'сообщает Центр Интернета вещей кодировку, которую мы используем для нашего текста сообщения. Задайте правильное значение для операционной системы или клиента; однако обычно это utf-8.

  • -H 'Authorization: [sas_token]'сообщает Центр Интернета вещей аутентификации с помощью маркера SAS. Замените [sas_token] маркер, созданный для назначенного Центра Интернета вещей.

  • -d '{"temperature": 30}'–d Параметр — это "данные" или текст сообщения, которое мы публикуем. В этой статье мы публикуем одну точку данных температуры. Тип контента был указан как application/json, поэтому для этого запроса текст — JSON. Обратите внимание, что для curl он упакован в одинарные кавычки; в противном случае необходимо экранировать двойные кавычки в формате JSON.

  • Последним параметром является URL-адрес для публикации. Для API событий отправки устройства URL-адрес: https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13

    • Замените [assigned_iot_hub_name] именем Центра Интернета вещей, которому было назначено ваше устройство.

    • Замените [device_id] идентификатор устройства, назначенный при регистрации устройства. Для устройств, подготавливающих через группы регистрации, идентификатор устройства будет идентификатором регистрации. Для отдельных регистраций можно указать идентификатор устройства, отличный от идентификатора регистрации в записи регистрации.

Например, для устройства с идентификатором my-symkey-device устройства для отправки точки данных телеметрии в центр Интернета вещей с именем MyExampleHub:

curl -L -i -X POST -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -H 'Authorization: SharedAccessSignature sr=MyExampleHub.azure-devices.net%2Fdevices%2Fmy-symkey-device&sig=f%2BwW8XOKeJOtiPc9Iwjc4OpExvPM7NlhM9qxN2a1aAM%3D&se=1663119026' -d '{"temperature": 30}' https://MyExampleHub.azure-devices.net/devices/my-symkey-device/messages/events?api-version=2020-03-13

Успешный вызов будет иметь ответ, аналогичный следующему:

HTTP/1.1 204 No Content
Content-Length: 0
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: 9e278582-3561-417b-b807-76426195920f
Date: Wed, 14 Sep 2022 00:32:53 GMT

Next Steps

  • Дополнительные сведения об аттестации симметричного ключа см. в статье "Аттестация симметричного ключа".

  • Дополнительные сведения о маркерах SAS и их структуре см. в статье "Управление доступом к DPS с помощью SAS".