撤銷先前發行的可驗證認證

注意

Microsoft Entra 驗證識別碼 現在已 Microsoft Entra 驗證識別碼 Microsoft Entra 系列產品的一部分。 深入瞭解 Microsoft Entra 系列 身分識別解決方案,並開始使用整合的 Microsoft Entra 系統管理中心

在處理可驗證認證的過程中,您不僅必須發出認證,有時您也必須撤銷認證。 在本文中,我們會探討 可驗證認證規格的 Status 屬性部分,並進一步了解撤銷程式、為什麼我們想要撤銷認證,以及某些數據和隱私權影響。

為何要撤銷可驗證的認證?

每個客戶都有自己的唯一原因,因為想要撤銷可驗證的認證。 以下是一些常見的主題:

  • 學生標識碼:學生不再是大學的現役學生。
  • 員工標識碼:員工不再是現用員工。
  • 狀態驅動程式授權:驅動程式不再處於該狀態。

如何? 撤銷可驗證的認證

在可驗證認證中使用已編製索引的宣告,您可以在入口網站中搜尋已核發的可驗證認證,並加以撤銷。

  1. 以具有 Azure KeyVault 登入金鑰許可權的系統管理員使用者身分,流覽至 Azure 入口網站 中的 [已驗證識別符] 刀鋒視窗。

  2. 選取可驗證的認證類型

  3. 在左側功能表上,選擇 [ 撤銷認證]Revoke a credential

  4. 搜尋您要撤銷之使用者的索引宣告。 編製宣告的索引是能夠搜尋認證的需求。

    Screenshot of the credential to revoke

    注意

    由於只會儲存可驗證認證的索引宣告哈希,因此只有完全相符專案會填入搜尋結果。 文本框中輸入的內容會使用相同的演算法進行哈希處理,並做為搜尋準則來比對預存、哈希、值。

  5. 找到相符專案時,請選取 您要撤銷之認證右邊的 [撤銷 ] 選項。

    注意

    執行撤銷作業的系統管理員用戶必須具有 Azure KeyVault 的登入密鑰許可權,否則您會收到錯誤訊息:無法使用指定的認證存取 KeyVault 資源。

    Screenshot of a warning letting you know that after revocation the user still has the credential

  6. 成功撤銷之後,您會看到狀態更新和綠色橫幅會出現在頁面頂端。

    screenshot of a successfully revoked verifiable credential message

要求服務 API 會將回呼中撤銷的 presentation_verified 認證表示為 REVOKED 根據指定的簡報要求是否 允許顯示撤銷的認證 ,撤銷認證的呈現會成功或失敗。

如何設定可驗證的認證,並能夠撤銷

Microsoft Entra 驗證識別碼不會儲存可驗證的認證資料。 因此,簽發者必須編制一個宣告的索引,才能讓認證可供搜尋。 只有一個已編制索引的宣告,如果沒有,則無法撤銷認證。 然後,選取的索引宣告會加鹽和雜湊,而且不會儲存為其原始值。

注意

雜湊是一種密碼編譯作業,可轉譯輸入,稱為 preimage ,並產生稱為具有固定長度之雜湊的輸出。 目前無法以計算方式反轉雜湊作業。

範例: 在下列範例中,displayName 是索引宣告,而且可以透過使用者完整名稱進行搜尋,而沒有其他專案。

{
  "attestations": {
    "idTokens": [
      {
        "clientId": "8d5b446e-22b2-4e01-bb2e-9070f6b20c90",
        "configuration": "https://didplayground.b2clogin.com/didplayground.onmicrosoft.com/B2C_1_sisu/v2.0/.well-known/openid-configuration",
        "redirectUri": "vcclient://openid",
        "scope": "openid profile email",
        "mapping": [
          {
            "outputClaim": "displayName",
            "required": true,
            "inputClaim": "$.name",
            "indexed": true
          },
          {
            "outputClaim": "firstName",
            "required": true,
            "inputClaim": "$.given_name",
            "indexed": false
          },
          {
            "outputClaim": "lastName",
            "required": true,
            "inputClaim": "$.family_name",
            "indexed": false
          }
        ],
        "required": false
      }
    ]
  },
  "validityInterval": 2592000,
  "vc": {
    "type": [
      "VerifiedCredentialExpert"
    ]
  }
}

注意

只有一個宣告可以從規則宣告對應編制索引。 如果您不小心在規則定義中沒有索引宣告,而您稍後會修正此問題,則已發行的可驗證認證將無法搜尋,因為它們在不存在索引時發出。

撤銷如何運作?

Microsoft Entra 驗證識別碼實作 W3C StatusList2021 。 當向要求服務 API 呈現時,API 會檢查撤銷狀態。 撤銷檢查會透過匿名 API 呼叫身分識別中樞進行,且不包含正在檢查可驗證認證是否仍然有效或撤銷的任何資料。 使用 statusList2021 時,Microsoft Entra 驗證識別碼只依索引宣告的雜湊值保留旗標,以追蹤撤銷狀態。

可驗證的認證資料

在每個 Microsoft 發出的可驗證認證中,有一個稱為 credentialStatus 的宣告。 此資料是導覽對應至此 VC 撤銷旗標的資料區塊中的位置。

注意

如果可驗證的認證是舊的,並在預覽期間發出,則此宣告不存在。 撤銷不適用於此認證,您必須重新發出。

...
"credentialStatus": { 
    "id": "urn:uuid:625dfcad-0000-1111-2222-333444445555?bit-index=31", 
    "type": "RevocationList2021Status", 
    "statusListIndex": 31, 
    "statusListCredential": "did:web:verifiedid.contoso.com?service=IdentityHub&queries=...data..." 
...

簽發者身分識別中樞 API 端點

在發行方的 DID 檔中,身分識別中樞的端點可在 區 service 段中取得。

didDocument": {
    "id": "did:web:verifiedid.contoso.com",
    "@context": [
        "https://www.w3.org/ns/did/v1",
        {
            "@base": "did:web:verifiedid.contoso.com"
        }
     ],
     "service": [
         {
             "id": "#linkeddomains",
             "type": "LinkedDomains",
             "serviceEndpoint": {
             "origins": [
                "https://verifiedid.contoso.com/"
                ]
             }
         },
         {
             "id": "#hub",
             "type": "IdentityHub",
             "serviceEndpoint": {
                "instances": [
                   "https://verifiedid.hub.msidentity.com/v1.0/11111111-2222-3333-4444-000000000000"
                ],
                "origins": [ ]
             }
         }
    ],

下一步