共用方式為


撤銷可驗證的認證

在處理可驗證認證的過程中,您發出認證,有時您需要撤銷認證。 在本文中,我們會檢閱可驗認證規格的屬性 Status 部分。 我們也進一步了解撤銷程序、為何想要撤銷認證,以及某些資料和隱私權影響。

為什麼要撤銷可驗證的認證?

每個客戶都有自己的唯一理由想要撤銷可驗認證。 以下是一些常見的案例:

  • 學生識別碼:該位學生不再是大學的在學學生。
  • 員工識別碼:員工不再任聘於該公司。
  • 州駕駛人執照:駕駛人不再居住於該州。

撤銷如何運作?

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

可驗認證資料

在每個 Microsoft 核發的可驗認證中,都有稱為 credentialStatus 的宣告。 此資料是導覽對應,在資料區塊中,此可驗認證具有其撤銷旗標。

注意

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


...
"credentialStatus": { 
    "id": "urn:uuid:00aa00aa-bb11-cc22-dd33-44ee44ee44ee?bit-index=31", 
    "type": "RevocationList2021Status", 
    "statusListIndex": 31, 
    "statusListCredential": "did:web:verifiedid.contoso.com?service=IdentityHub&queries=...data..." 
...

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

在核發方分散式識別碼文件中,身分識別中樞的端點可在 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/00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
                ],
                "origins": [ ]
             }
         }
    ],

建立可撤銷的可驗證認證

Microsoft Entra 驗證識別碼不會儲存可驗認證資料。 簽發者必須對一個宣告編製索引,才能讓認證可供搜尋。 只有一個宣告可以編製索引,如果沒有,就無法撤銷認證。 然後,選取要編製索引的宣告會進行 Salt 處理和雜湊處理,而且不會儲存為其原始值。

注意

雜湊是單向的密碼編譯作業,會轉換輸入 (稱為 preimage) 並產生輸出 (稱為雜湊),其具有固定長度。 目前無法以計算方式反轉哈希作業。

範例:在下列範例中,displayName 是索引宣告。 您只能透過使用者的完整名稱進行搜尋,而不能透過其他方式搜尋。

{
  "attestations": {
    "idTokens": [
      {
        "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
        "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"
    ]
  }
}

重要

您只能從規則宣告對應編製一個宣告的索引。 如果您不小心在規則定義中沒有索引宣告,而您稍後會更正這項監督,則變更之前發出的所有可驗證認證將無法搜尋,因為它們在沒有任何索引存在時發出。

我要如何撤銷可驗認證?

您可以使用可驗證認證中的索引宣告來搜尋已核發的可驗證認證並撤銷它們。

  1. 以具有 Azure Key Vault 之簽署金鑰權限的系統管理員使用者身分,移至 Azure 入口網站中的 [已驗證識別碼] 窗格。

  2. 選取可驗認證類型。

  3. 在最左邊的功能表上,選取 [撤銷認證]

    顯示認證撤銷的螢幕擷取畫面。

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

    此螢幕擷取畫面顯示要撤銷的認證。

    重要

    我們只會儲存索引宣告的哈希版本。 這表示只與儲存在索引宣告工作中的值完全相符。 當您在文字框中輸入資訊時,會使用相同的演算法進行哈希處理。 接著,這個哈希值會用來搜尋與預存哈希宣告相符的專案。 如果您找不到相符專案,您可能已輸入錯誤的資訊,或宣告可能未編製索引。

  5. 找到符合項目之後,請選取您希望撤銷認證的右邊 [撤銷] 選項。

    執行撤銷作業的系統管理員用戶必須具有 金鑰保存庫 的登入密鑰許可權,否則會出現錯誤訊息「無法使用指定的認證存取 金鑰保存庫 資源」。

    顯示警告的螢幕擷取畫面,指出撤銷之後,使用者仍具有認證。

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

    螢幕擷取畫面:顯示已成功撤銷的可驗認證訊息。

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

下一步