共用方式為


調用請求服務的 REST API

Microsoft Entra 已驗證的標識碼包含要求服務 REST API。 此 API 可讓您發出並驗證認證。 本文說明如何開始使用要求服務 REST API。

API 存取令牌

您的應用程式必須包含具有必要許可權的有效存取令牌,才能存取要求服務 REST API。 Microsoft 身分識別平台簽發的存取權杖包含資訊(範圍),用於要求服務的 REST API 以驗證呼叫者。 存取令牌可確保呼叫者具有適當的許可權來執行他們所要求的作業。

若要取得存取令牌,您的應用程式必須向Microsoft身分識別平台註冊,並由系統管理員授權存取要求服務 REST API。 如果您尚未註冊 verifiable-credentials-app 應用程式,請參閱 如何註冊應用程式,然後 產生應用程式秘密

取得存取令牌

使用 OAuth 2.0 用戶端認證授與流程,以使用 Microsoft 身分識別平臺取得存取令牌。 請使用受信任的函式庫來達成此目的。 在本教學課程中,我們使用 Microsoft 驗證連結庫 (MSAL)。 MSAL 可簡化將驗證和授權新增至可呼叫安全 Web 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 取代為您的 租用戶 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. 建構對要求服務 REST API 的 HTTP POST 要求。 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
        }
      }
    }
  ]
}

如需完整的程式代碼,請參閱下列其中一個程式代碼範例:

回呼事件

請求有效負載包含 發行呈現 回調端點。 端點是 Web 應用程式的一部分,應該透過 HTTPS 通訊協定公開提供。 要求服務 API 會呼叫您的端點,以通知您的應用程式特定事件。 例如,這類事件可能是當用戶掃描 QR 代碼、使用驗證器應用程式的深層連結,或完成簡報程式時。

下圖描述您的應用程式對請求服務 REST API 的呼叫,以及對您應用程式的回呼。

圖表顯示對 API 和回調事件的呼叫。

將您的端點設定為接聽傳入的 HTTP POST 要求。 下列代碼段示範如何處理發行回呼 HTTP 要求,以及如何據以更新 UI:

不適用。 選擇其他其中一種程式設計語言。

後續步驟

深入了解這些規格: