撤銷先前發出的可驗認證

注意

Azure Active Directory 可驗認證現在是 Microsoft Entra 驗證識別碼,並且是 Microsoft Entra 系列產品的一部分。 深入了解 Microsoft Entra 系列身分識別解決方案,並開始使用統一的 Microsoft Entra 系統管理中心

在使用可驗認證 (VC) 的過程中,您不僅需要發行認證,有時候也必須撤銷該認證。 在本文中,我們會探討 VC 規格的「狀態」屬性部分,並進一步了解撤銷程序、為什麼我們會想要撤銷認證,以及一些資料和隱私權含意。

為什麼您會想要撤銷可驗認證?

每位客戶都有自己撤銷可驗認證的獨特原因,但以下是我們到目前為止所聽到的一些常見主題。

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

我要怎麼撤銷可驗認證

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

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

  2. 選取可驗認證類型

  3. 在左側選單上,選擇 [撤銷認證] [撤銷認證]

  4. 搜尋您想要撤銷之使用者的索引宣告。 如果您尚未編製宣告索引,則搜尋將無法運作,而且您將無法撤銷可驗認證。

    螢幕擷取畫面:要撤銷的認證

    注意

    我們只會從可驗認證儲存索引宣告之訊息摘要,因此只有完全相符之結果才會填入搜尋結果中。 文字方塊中輸入的內容會使用相同的演算法進行雜湊處理,並用來作為搜尋準則,以符合已儲存、雜湊的值。

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

    注意

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

    螢幕擷取畫面:可讓您知道使用者在撤銷之後仍然擁有認證的警告

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

    螢幕擷取畫面:成功撤銷可驗認證訊息

現在,只要將出示傳送至要求服務 API,就會檢查是否已撤銷 VC。

如何設定可撤銷的可驗認證

Microsoft 不會儲存可驗認證資料。 因此,簽發者需要在 VC 可供搜尋之前建立一個宣告 (即已編製索引的宣告)。 只能有一個已編製索引的宣告,如果沒有,則您將無法撤銷認證。 然後,選取要編製索引的宣告會進行 Salt 處理和雜湊處理,而且不會儲存為其原始值。

注意

訊息摘要是單向的密碼編譯作業,它會開啟輸入 (稱為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:ion:EiDR0Y6zfvnUy2NjO293XNfe9AOL...<SNIP>...?service=IdentityHub&queries=...data..." 
...

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

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

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

後續步驟