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


Вызов REST API службы запросов

Проверенные учетные данные Microsoft Entra включают REST API службы запросов. Этот API позволяет выдавать и проверять учетные данные. В этой статье показано, как приступить к использованию REST API службы запросов.

Маркер доступа API

Чтобы приложение имело доступ к REST API службы запросов, оно должно включать действительный маркер доступа с необходимыми разрешениями. Маркеры доступа, выдаваемые платформой удостоверений Майкрософт, содержат сведения (области), которые REST API службы запросов использует для проверки вызывающего. Маркер доступа гарантирует, что вызывающий имеет необходимые разрешения для выполнения запрошенной им операции.

Чтобы получить маркер доступа, приложение должно быть зарегистрировано в платформа удостоверений Майкрософт и авторизовано администратором для доступа к REST API службы запросов. Если вы еще не зарегистрировали приложение verifiable-credentials-app, узнайте, как зарегистрировать приложение и создать секрет приложения.

Получение маркера доступа.

Используйте поток предоставления учетных данных клиента OAuth 2.0, чтобы получить маркер доступа с помощью платформы удостоверений Майкрософт. Для этой цели используйте доверенную библиотеку. В этом руководстве мы используем библиотеку проверки подлинности Майкрософт (MSAL). MSAL упрощает добавление проверки подлинности и авторизации в приложение, которое может вызывать безопасный веб-API.

POST /{tenant}/oauth2/v2.0/token HTTP/1.1           //Line breaks for clarity
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=3db474b9-6a0c-4840-96ac-1fceb342124f/.default
&client_secret=sampleCredentia1s
&grant_type=client_credentials

В приведенном выше коде укажите следующие параметры.

Параметр Условие Description
Центр Обязательное поле Арендатор каталога, с которым будет работать приложение. Например: https://login.microsoftonline.com/{your-tenant}. (Замените your-tenant своим идентификатором или именем арендатора.)
Client ID Обязательное поле Идентификатор приложения, назначенный приложению. Эти сведения можно найти на портале Azure, где вы зарегистрировали свое приложение.
Секрет клиента Обязательное поле Секрет клиента, созданный для приложения.
Области Обязательное поле Должен иметь значение3db474b9-6a0c-4840-96ac-1fceb342124f/.default. Этот параметр создает маркер доступа с утверждением VerifiableCredential.Create.Allролей.

Дополнительные сведения о том, как получить маркер доступа с помощью удостоверения консольного приложения, см. в одной из следующих статей:

Вы также можете получить доступ к запросу маркера с сертификатом вместо секрета клиента.

POST /{tenant}/oauth2/v2.0/token HTTP/1.1   //Line breaks for clarity
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=3db474b9-6a0c-4840-96ac-1fceb342124f/.default
&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsIng1dCI6Imd4OHRHeXN5amNScUtqRlBuZDdSRnd2d1pJMCJ9.eyJ{a lot of characters here}M8U3bSUKKJDEg
&grant_type=client_credentials

Вызов API

Чтобы выдать или проверить проверяемые учетные данные, выполните следующее:

  1. Создайте HTTP-запрос POST к REST API службы запросов. Идентификатор клиента больше не нужен в URL-адресе, так как он присутствует в качестве утверждения в маркере доступа.

    Проблема

    POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createIssuanceRequest
    

    Проверка

    POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createPresentationRequest
    
  2. Вложите маркер доступа в качестве маркера носителя в заголовок авторизации в HTTP-запросе.

    Authorization: Bearer <token>
    
  3. В качестве заголовка Content-Type установите Application/json.

  4. Подготовьте и вложите полезные данные запроса на выдачу или представление в текст запроса.

  5. Отправьте запрос в REST API службы запросов.

API службы запросов возвращает код состояния HTTP 201 Created при успешном вызове. Если вызов API возвращает ошибку, проверка справочную документацию по ошибке.

Пример запроса на выдачу

В следующем примере показан запрос на выдачу проверяемого удостоверения. Дополнительные сведения о полезных данных см. в статье Спецификация выдачи REST API службы запросов.

POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createIssuanceRequest
Content-Type: application/json
Authorization: Bearer  <token>

{...JSON payload...}

Запрос на выдачу idTokenHint с помощью потока аттестации:

{
    "authority": "did:web:verifiedid.contoso.com",
    "callback": {
        "url": "https://contoso.com/api/issuer/issuanceCallback",
        "state": "de19cb6b-36c1-45fe-9409-909a51292a9c",
        "headers": {
            "api-key": "OPTIONAL API-KEY for CALLBACK EVENTS"
        }
    },
    "registration": {
        "clientName": "Verifiable Credential Expert Sample"
    },
    "type": "VerifiedCredentialExpert",
    "manifestUrl": "https://verifiedid.did.msidentity.com/v1.0/00001111-aaaa-2222-bbbb-3333cccc4444/verifiableCredentials/contracts/VerifiedCredentialExpert1",
    "pin": {
        "value": "3539",
        "length": 4
    },
    "claims": {
        "given_name": "Megan",
        "family_name": "Bowen"
    }
}

Полный код приведен в одном из следующих примеров:

Пример запроса на представление

В следующем примере показан запрос на представление проверяемого удостоверения. Дополнительные сведения о полезных данных см. в статье Спецификация представления REST API службы запросов.

POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createPresentationRequest
Content-Type: application/json
Authorization: Bearer  <token>

{...JSON payload...}

Запрос презентации для учетных данных с определенным типом и издателем:

{
  "authority": "did:web:verifiedid.contoso.com",
  "callback": {
    "url": "https://contoso.com/api/verifier/presentationCallback",
    "state": "92d076dd-450a-4247-aa5b-d2e75a1a5d58",
    "headers": {
      "api-key": "OPTIONAL API-KEY for CALLBACK EVENTS"
    }
  },
  "registration": {
    "clientName": "Veritable Credential Expert Verifier"
  },
  "includeReceipt": true,
  "requestedCredentials": [
    {
      "type": "VerifiedCredentialExpert",
      "purpose": "So we can see that you a veritable credentials expert",
      "acceptedIssuers": [
        "did:web:verifiedid.contoso.com"
      ],
      "configuration": {
        "validation": {
          "allowRevoked": true,
          "validateLinkedDomain": true
        }
      }
    }
  ]
}

Полный код приведен в одном из следующих примеров:

События обратного вызова

Полезные данные запроса содержат конечную точку обратного вызова выдачи или представления. Конечная точка является частью веб-приложения и должна быть общедоступной через протокол HTTPS. API службы запросов вызывает конечную точку, чтобы сообщить приложению об определенных событиях. Например, такие события могут возникать, когда пользователь сканирует QR-код, использует глубокую ссылку на приложение проверки подлинности или завершает процесс презентации.

На следующей схеме описывается вызов приложения, который выполняется в REST API службы запросов и обратном вызове в приложение.

Схема, показывающая вызов API и события обратного вызова.

Настройте конечную точку для ожидания передачи входящих HTTP-запросов POST. В следующем фрагменте кода показано, как обрабатывать HTTP-запрос обратного вызова выдачи и как обновить пользовательский интерфейс соответствующим образом:

Неприменимо. Выберите другой язык программирования.

Следующие шаги

Дополнительные сведения об этих спецификациях: