요청 서비스 REST API 호출

Microsoft Entra Verified ID는 요청 서비스 REST API를 포함합니다. 이 API를 사용하면 자격 증명을 발급하고 확인할 수 있습니다. 이 문서에서는 요청 서비스 REST API를 사용하는 방법을 보여 줍니다.

API 액세스 토큰

애플리케이션은 요청 서비스 REST API에 액세스할 수 있도록 필요한 권한이 있는 유효한 액세스 토큰을 포함해야 합니다. Microsoft ID 플랫폼에서 발급한 액세스 토큰에는 요청 서비스 REST API에서 호출자의 유효성을 검사하는 데 사용하는 정보(범위)가 포함됩니다. 액세스 토큰은 호출자가 요청하는 작업을 수행할 수 있는 적절한 권한을 갖도록 합니다.

액세스 토큰을 가져오려면 앱이 Microsoft ID 플랫폼 등록되고 관리자가 요청 서비스 REST API에 대한 액세스 권한을 부여받아야 합니다. verifiable-credentials-app 애플리케이션을 등록하지 않은 경우 앱을 등록하는 방법애플리케이션 비밀 생성을 참조하세요.

액세스 토큰 가져오기

OAuth 2.0 클라이언트 자격 증명 부여 흐름을 사용하여 Microsoft ID 플랫폼을 통해 액세스 토큰을 획득합니다. 이 목적을 위해 신뢰할 수 있는 라이브러리를 사용합니다. 이 자습서에서는 MSAL(Microsoft 인증 라이브러리)을 사용합니다. 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=535fb089-9ff3-47b6-9bfb-4f1264799865
&scope=3db474b9-6a0c-4840-96ac-1fceb342124f/.default
&client_secret=sampleCredentia1s
&grant_type=client_credentials

위의 코드에서 다음 매개 변수를 제공합니다.

매개 변수 Condition 설명
인증 기관 Required 애플리케이션이 작동할 디렉터리 테넌트입니다. 예: https://login.microsoftonline.com/{your-tenant} (your-tenant테넌트 ID 또는 이름으로 바꿉니다.)
Client ID Required 앱에 할당되는 애플리케이션 ID입니다. 앱을 등록한 Azure Portal에서 이 정보를 찾을 수 있습니다.
클라이언트 암호 Required 앱에 대해 생성한 클라이언트 암호입니다.
범위 Required 3db474b9-6a0c-4840-96ac-1fceb342124f/.default로 설정해야 합니다. 이 설정은 역할 클레임이 있는 액세스 토큰을 생성합니다VerifiableCredential.Create.All.

콘솔 앱의 ID를 사용하여 액세스 토큰을 가져오는 방법에 대한 자세한 내용은 다음 문서 중 하나를 참조하세요.

클라이언트 암호 대신 인증서를 사용하여 토큰 요청에 액세스할 수도 있습니다.

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=12345678-0000-0000-00000000000000000
&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. 요청 서비스 REST API에 대한 HTTP POST 요청을 생성합니다. 테넌트 ID는 액세스 토큰에 클레임으로 존재하기 때문에 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 발급 요청:

{
    "includeQRCode": false,
    "callback": {
        "url": "https://contoso.com/api/issuer/issuanceCallback",
        "state": "de19cb6b-36c1-45fe-9409-909a51292a9c",
        "headers": {
            "api-key": "OPTIONAL API-KEY for CALLBACK EVENTS"
        }
    },
    "authority": "did:web:verifiedid.contoso.com",
    "registration": {
        "clientName": "Verifiable Credential Expert Sample"
    },
    "type": "VerifiedCredentialExpert",
    "manifestUrl": "https://verifiedid.did.msidentity.com/v1.0/12345678-0000-0000-0000-000000000000/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...}

특정 형식 및 발급자를 사용하는 자격 증명에 대한 프레젠테이션 요청:

{
  "includeQRCode": true,
  "callback": {
    "url": "https://contoso.com/api/verifier/presentationCallback",
    "state": "92d076dd-450a-4247-aa5b-d2e75a1a5d58",
    "headers": {
      "api-key": "OPTIONAL API-KEY for CALLBACK EVENTS"
    }
  },
  "authority": "did:web:verifiedid.contoso.com",
  "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 코드를 스캔하거나, 인증자 앱에 대한 딥 링크를 사용하거나, 프레젠테이션 프로세스를 완료할 때 이러한 이벤트가 발생할 수 있습니다.

다음 다이어그램에서는 앱이 Request Service REST API에 대해 호출하고 애플리케이션에 대한 콜백을 설명합니다.

API 및 콜백 이벤트에 대한 호출을 보여 주는 다이어그램

들어오는 HTTP POST 요청을 수신 대기하도록 엔드포인트를 구성합니다. 다음 코드 조각은 발급 콜백 HTTP 요청을 처리하는 방법과 그에 따라 UI를 업데이트하는 방법을 보여 줍니다.

해당 없음. 다른 프로그래밍 언어 중 하나를 선택합니다.

다음 단계

다음 사양에 대해 자세히 알아봅니다.