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


Вызовите 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

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

Параметр Состояние Описание
Авторитет Обязательно Арендатор каталога, с которым приложение планирует взаимодействовать. Например, https://login.microsoftonline.com/{your-tenant}. (Замените your-tenant идентификатором клиента или именем.)
Идентификатор клиента Обязательно Идентификатор приложения, назначенный приложению. Эти сведения можно найти на портале 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. Прикрепите токен типа bearer к заголовку авторизации в 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-запрос обратного вызова выдачи и как обновить пользовательский интерфейс соответствующим образом:

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

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

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