애플리케이션에서 Microsoft Entra Verified ID 자격 증명 발급

이 자습서에서는 Microsoft Entra 테넌트에 연결하는 로컬 컴퓨터에서 샘플 애플리케이션을 실행합니다. 애플리케이션을 사용하여 확인된 자격 증명 전문가 카드를 발급하고 확인합니다.

이 문서에서는 다음 방법을 설명합니다.

  • Azure에서 확인된 자격 증명 전문가 카드를 만듭니다.
  • 샘플 애플리케이션을 설정하기 위한 자격 증명 및 환경 세부 정보를 수집합니다.
  • 샘플 애플리케이션 코드를 로컬 컴퓨터에 다운로드합니다.
  • 샘플 애플리케이션을 확인된 자격 증명 전문가 카드 및 환경 세부 정보로 업데이트합니다.
  • 샘플 애플리케이션을 실행하고, 첫 번째 확인된 자격 증명 전문가 카드를 발급합니다.
  • 확인된 자격 증명 전문가 카드를 확인합니다.

다음 다이어그램에서는 Microsoft Entra Verified ID 아키텍처 및 구성 요소를 보여 줍니다.

Diagram that illustrates the Microsoft Entra Verified ID architecture.

필수 조건

Azure에서 확인된 자격 증명 전문가 카드를 만들기

이 문서의 단계는 시작하는 포털에 따라 약간 다를 수 있습니다.

이 단계에서는 Microsoft Entra Verified ID를 사용하여 확인된 자격 증명 전문가 카드를 만듭니다. 자격 증명을 만들면 Microsoft Entra 테넌트는 프로세스를 시작하는 사용자에게 이 자격 증명을 발급할 수 있습니다.

  1. 최소한 전역 관리자Microsoft Entra 관리 센터에 로그인합니다.

  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을 복사합니다. Authenticator가 사용자에게 확인 가능한 자격 증명 발급 요구 사항을 표시하기 전에 평가하는 URL입니다. 나중에 사용할 수 있도록 기록해 둡니다.

  4. 테넌트 ID를 복사하여 나중에 사용할 수 있도록 기록해 둡니다. 테넌트 ID는 위에 빨간색으로 강조 표시된 매니페스트 URL의 GUID입니다.

샘플 코드 다운로드

샘플 애플리케이션은 .NET에서 사용할 수 있으며, 코드는 GitHub 리포지토리에서 유지 관리됩니다. 여기서 GitHub의 샘플 코드를 다운로드하거나 리포지토리를 로컬 머신에 복제합니다.

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

확인 가능한 자격 증명 앱 구성

사용자가 만든 등록된 애플리케이션에 대한 클라이언트 암호를 만듭니다. 샘플 애플리케이션은 토큰을 요청할 때 클라이언트 암호를 사용하여 ID를 증명합니다.

  1. 최소한 전역 관리자Microsoft Entra 관리 센터에 로그인합니다.

  2. Microsoft Entra ID를 선택합니다.

  3. 애플리케이션>앱 등록 페이지로 이동합니다.

  4. 앞에서 만든 verifiable-credentials-app 애플리케이션을 선택합니다.

  5. 이름을 선택하여 등록 세부 정보로 이동합니다.

  6. 애플리케이션(클라이언트) ID를 복사하여 나중에 사용할 수 있도록 저장합니다.

    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 Verified ID 환경에 대한 정보가 포함되어 있습니다. 이전 단계에서 기록한 정보로 다음 속성을 업데이트합니다.

    1. 테넌트 ID: 사용자의 테넌트 ID
    2. 클라이언트 ID: 사용자의 클라이언트 ID
    3. 클라이언트 암호: 사용자의 클라이언트 암호
    4. DidAuthority: 탈중앙화 식별자
    5. 자격 증명 매니페스트: 사용자의 매니페스트 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를 실행하여 5000에서 URL을 설정하고, 이를 인터넷에서 공개적으로 사용할 수 있도록 합니다.

    ngrok http 5000
    

    참고 항목

    일부 컴퓨터에서는 명령을 ./ngrok http 5000 형식으로 실행해야 할 수 있습니다.

  3. ngrok에서 생성된 HTTPS URL을 엽니다.

    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. 모바일 디바이스를 사용하여 Authenticator 앱을 통해 QR 코드를 스캔합니다. 카메라에서 직접 QR 코드를 스캔합니다. 그러면 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 코드를 스캔한 화면에 표시된 PIN 코드를 입력하라는 메시지가 표시됩니다. PIN은 발급 기능에 추가 보호 계층을 제공합니다. 발급 QR 코드가 표시될 때마다 PIN 코드가 임의로 생성됩니다.

    Screenshot that shows how to type the pin code.

  9. PIN 번호를 입력하면 자격 증명 추가 화면이 표시됩니다. 화면 맨 위에 확인 안 됨 메시지(빨간색)가 표시됩니다. 이 경고는 앞서 언급한 도메인 유효성 검사 경고와 관련이 있습니다.

  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이 자격 증명의 이름과 성 값으로 포함되어 있습니다. 이러한 값은 샘플 애플리케이션에서 하드 코딩되었으며, 페이로드에서 발급할 때 확인 가능한 자격 증명에 추가되었습니다.

실제 시나리오에서는 애플리케이션이 ID 공급자에서 사용자 세부 정보를 끌어옵니다. 다음 코드 조각에서는 샘플 애플리케이션에서 이름이 설정되는 위치를 보여 줍니다.

//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";
    ...
}

다음 단계

다음 단계에서는 신뢰 당사자 애플리케이션이라고도 하는 타사 애플리케이션에서 자체 Microsoft Entra 테넌트 확인 가능한 자격 증명 API 서비스를 사용하여 자격 증명을 확인하는 방법을 알아봅니다.