Выдача проверяемых удостоверений Microsoft Entra из приложения

В этом руководстве вы запустите пример приложения с локального компьютера, который подключается к клиенту Microsoft Entra. С помощью этого приложения вы сможете выдать карточку эксперта с проверенным удостоверением и проверить ее.

Вы узнаете, как выполнять следующие задачи:

  • Создание карточки эксперта с проверенным удостоверением в Azure.
  • Сбор сведений об удостоверении и среде для настройки примера приложения.
  • Скачивание кода примера приложения на локальный компьютер.
  • Указание сведений о карточке эксперта с проверенным удостоверением и среде в примере приложения.
  • Выполнение примера приложения и выдача первой карточки эксперта с проверенным удостоверением.
  • Проверка карточки эксперта с проверенным удостоверением.

На следующей диаграмме показана архитектура службы "Проверенные учетные данные Microsoft Entra" и настраиваемый компонент.

Diagram that illustrates the Microsoft Entra Verified ID architecture.

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

Создание карточки эксперта с проверенным удостоверением в Azure

Совет

Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.

На этом шаге вы создадите карточку эксперта с проверенным удостоверением с помощью службы "Проверенные учетные данные Microsoft Entra". После создания учетных данных клиент Microsoft Entra может выдавать его пользователям, которые инициируют процесс.

  1. Войдите в Центр администрирования Microsoft Entra как минимум глобальный Администратор istrator.

  2. Выберите проверяемые учетные данные.

  3. После настройки арендатора должно появиться окно Создание удостоверения. Кроме того, можно выбрать Удостоверения в меню слева, а затем выбрать + Добавить удостоверение.

  4. В окне Создать учетные данные выберите Настраиваемые учетные данные и нажмите кнопку Далее.

    1. В поле Имя удостоверения введите VerifiedCredentialExpert. Это имя используется на портале для идентификации ваших проверяемых удостоверений. Оно входит в состав контракта проверяемых удостоверений.

    2. Скопируйте следующий код JSON и вставьте его в текстовое поле Определение дисплея

      {
          "locale": "en-US",
          "card": {
            "title": "Verified Credential Expert",
            "issuedBy": "Microsoft",
            "backgroundColor": "#000000",
            "textColor": "#ffffff",
            "logo": {
              "uri": "https://didcustomerplayground.blob.core.windows.net/public/VerifiedCredentialExpert_icon.png",
              "description": "Verified Credential Expert Logo"
            },
            "description": "Use your verified credential to prove to anyone that you know all about verifiable credentials."
          },
          "consent": {
            "title": "Do you want to get your Verified Credential?",
            "instructions": "Sign in with your account to get your card."
          },
          "claims": [
            {
              "claim": "vc.credentialSubject.firstName",
              "label": "First name",
              "type": "String"
            },
            {
              "claim": "vc.credentialSubject.lastName",
              "label": "Last name",
              "type": "String"
            }
          ]
      }
      
    3. Скопируйте следующий код JSON и вставьте его в текстовое поле Определение правил

      {
        "attestations": {
          "idTokenHints": [
            {
              "mapping": [
                {
                  "outputClaim": "firstName",
                  "required": true,
                  "inputClaim": "$.given_name",
                  "indexed": false
                },
                {
                  "outputClaim": "lastName",
                  "required": true,
                  "inputClaim": "$.family_name",
                  "indexed": true
                }
              ],
              "required": false
            }
          ]
        },
        "validityInterval": 2592000,
        "vc": {
          "type": [
            "VerifiedCredentialExpert"
          ]
        }
      }
      
    4. Нажмите кнопку создания.

Следующий снимок экрана демонстрирует создание удостоверения:

Screenshot that shows how to create a new credential.

Сбор сведений об удостоверении и среде

Теперь, когда у вас есть новое удостоверение, вам нужно собрать некоторые сведения о нем и вашей среде. Эти сведения необходимы для настройки примера приложения.

  1. В разделе "Проверяемые удостоверения" выберите Выдать удостоверение.

    Screenshot that shows how to select the newly created verified credential.

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

  3. Скопируйте URL-адрес манифеста. Это URL-адрес, который приложение для проверки подлинности проверяет перед отображением пользователю требований по выдаче проверяемых удостоверений. Сохраните его для дальнейшего использования.

  4. Скопируйте значение параметра Идентификатор арендатора и сохраните его для дальнейшего использования. Идентификатор клиента — это GUID в URL-адресе манифеста, выделенном красным цветом выше.

Скачивание примера кода

Пример приложения .NET доступен в репозитории GitHub. Скачайте наш пример кода на GitHub или клонируйте репозиторий на локальный компьютер:

git clone https://github.com/Azure-Samples/active-directory-verifiable-credentials-dotnet.git

Настройка приложения для проверки проверяемых удостоверений

Создайте секрет клиента для зарегистрированного приложения, которое вы создали. Приложение использует секрет клиента для подтверждения подлинности при запросе токенов.

  1. Войдите в Центр администрирования Microsoft Entra как минимум глобальный Администратор istrator.

  2. Выберите Microsoft Entra ID.

  3. Перейдите на страницу "Приложения> Регистрация приложений".

  4. Выберите приложение verifiable-credentials-app, которое вы создали ранее.

  5. Выберите имя, чтобы перейти к сведениям о регистрации.

  6. Скопируйте значение параметра Идентификатор приложения (клиента) и сохраните для последующего использования.

    Screenshot that shows how to copy the app registration ID.

  7. В главном меню в разделе Управление выберите Сертификаты и секреты.

  8. Выберите Создать секрет клиента и сделайте следующее:

    1. В поле Описание введите описание секрета клиента (например, vc-sample-secret).

    2. Для параметра Истекает выберите срок действия секрета (например, "6 месяцев"). Нажмите кнопку Добавить.

    3. Запишите значение секрета в поле Значение. Это значение будет использовано позже для конфигурации. Значение секрета не будет отображаться снова, и его невозможно будет получить другими способами. Запишите его сразу же после отображения.

На этом этапе у вас должны быть все необходимые сведения для настройки примера приложения.

Изменение примера приложения

Теперь вы внесете изменения в код издателя примера приложения, чтобы добавить туда URL-адрес проверяемого удостоверения. Это позволяет выдавать проверяемые удостоверения с помощью вашего собственного клиента.

  1. В папке active-directory-verifiable-credentials-dotnet-main откройте Visual Studio Code и выберите проект в папке 1-asp-net-core-api-idtokenhint.

  2. В корневой папке проекта откройте файл appsettings.json. Этот файл содержит сведения об среде службы "Проверенные учетные данные Microsoft Entra". Обновите следующие свойства, указав сведения, записанные на предыдущих шагах:

    1. Tenant ID: идентификатор арендатора;
    2. Client ID: идентификатор клиента.
    3. Client Secret: секрет клиента;
    4. DidAuthority: ваш децентрализованный идентификатор
    5. Credential Manifest: URL-адрес манифеста

    CredentialType требуется только для презентации, поэтому если все, что вы хотите сделать, это выдача, она строго не требуется.

  3. Сохраните файл appsettings.json.

В следующем коде JSON показано, как должен выглядеть файл appsettings.json:

{
  "VerifiedID": {
    "Endpoint": "https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/",
    "VCServiceScope": "3db474b9-6a0c-4840-96ac-1fceb342124f/.default",
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "12345678-0000-0000-0000-000000000000",
    "ClientId": "33333333-0000-0000-0000-000000000000",
    "ClientSecret": "123456789012345678901234567890",
    "CertificateName": "[Or instead of client secret: Enter here the name of a certificate (from the user cert store) as registered with your application]",
    "DidAuthority": "did:web:...your-decentralized-identifier...",
    "CredentialType": "VerifiedCredentialExpert",
    "CredentialManifest":  "https://verifiedid.did.msidentity.com/v1.0/12345678-0000-0000-0000-000000000000/verifiableCredentials/contracts/VerifiedCredentialExpert"
  }
}

Выдача первой карточки эксперта с проверенным удостоверением

Теперь вы можете выдать свою первую карточку эксперта с проверенным удостоверением, выполнив пример приложения.

  1. В Visual Studio Code запустите проект Verifiable_credentials_DotNet. Или выполните следующую команду в командной строке вашей операционной системы:

    cd active-directory-verifiable-credentials-dotnet\1-asp-net-core-api-idtokenhint
    dotnet build "AspNetCoreVerifiableCredentials.csproj" -c Debug -o .\bin\Debug\net6.
    dotnet run
    
  2. В другом окне командной строки выполните следующую команду. Она запускает ngrok, чтобы настроить URL-адрес на порте 5000 и сделать его общедоступным в Интернете.

    ngrok http 5000
    

    Примечание.

    На некоторых компьютерах может потребоваться выполнить команду в таком формате: ./ngrok http 5000.

  3. Откройте URL-адрес HTTPS, созданный службой ngrok.

    Screenshot that shows how to get the ngrok public URL.

  4. В веб-браузере щелкните Получить удостоверение.

    Screenshot that shows how to choose to get the credential from the sample app.

  5. На мобильном устройстве просканируйте QR-код с помощью приложения Authenticator. Это также можно сделать в приложении камеры, которое откроет приложение Authenticator.

    Screenshot that shows how to scan the QR code.

  6. Вы увидите сообщение с предупреждением о том, что это приложение или веб-сайт может быть небезопасным. Выберите Дополнительно.

    Screenshot that shows how to respond to the warning message.

  7. В предупреждении выберите Все равно продолжить (небезопасно). Вы видите это предупреждение, так как ваш домен не связан с децентрализованным удостоверением (DID). Чтобы подтвердить домен, следуйте инструкциям в статье Связывание домена с децентрализованным идентификатором (DID). В рамках этого руководства вы можете пропустить регистрацию домена и щелкнуть Все равно продолжить (небезопасно).

    Screenshot that shows how to proceed with the risky warning.

  8. Вам будет предложено ввести ПИН-код, который был указан на экране, когда вы сканировали QR-код. ПИН-код добавляет дополнительный уровень защиты при выдаче. ПИН-код создается случайным образом при каждом отображении QR-кода.

    Screenshot that shows how to type the pin code.

  9. После ввода PIN-кода отобразится экран Добавление удостоверения. В верхней части экрана вы увидите предупреждение красным цветом Not verified (Не проверено). Оно относится к предупреждению о проверке домена, упомянутому выше.

  10. Нажмите кнопку Добавить, чтобы получить проверяемое удостоверение.

    Screenshot that shows how to add your new credential.

Поздравляем! Теперь у вас есть проверяемое удостоверение в виде карточки "Знаток проверяемых удостоверений".

Screenshot that shows a newly added verifiable credential.

Вернитесь в приложение. В нем появится сообщение о том, что удостоверение успешно выдано.

Screenshot that shows a successfully issued verifiable credential.

Имена проверяемых удостоверений

В вашем проверяемом удостоверении указано имя и фамилия Megan Bowen. Они заданы в коде примера приложения и добавлены в проверяемое удостоверение при его выдаче в полезной нагрузке.

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

//file: IssuerController.cs
[HttpGet("/api/issuer/issuance-request")]
public async Task<ActionResult> issuanceRequest()
  {
    ...
    // Here you could change the payload manifest and change the first name and last name.
    payload["claims"]["given_name"] = "Megan";
    payload["claims"]["family_name"] = "Bowen";
    ...
}

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

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