建立標識元令牌的可驗證認證

使用 idTokens 證明的規則定義會產生發行流程,您必須在 Microsoft Authenticator 中對 OpenID 連線 (OIDC) 識別提供者執行互動式登錄。 識別提供者傳回的標識碼令牌中的宣告可用來填入已核發的可驗證認證。 規則定義中的宣告對應區段會指定使用哪些宣告。

使用idTokens證明類型建立自訂認證

在 Azure 入口網站 中,當您選取 [新增認證] 時,您會取得啟動兩個快速入門的選項。 選取 自定義認證,然後選取 [ 下一步]。

建立自定義認證的問題認證快速入門螢幕快照。

在 [ 建立新的認證 ] 頁面上,輸入顯示和規則定義的 JSON 程序代碼。 在 [ 認證名稱] 方塊中,為認證提供類型名稱。 若要建立認證,請選取 [建立]。

[建立新的認證] 頁面的螢幕快照,其中顯示顯示和規則檔案的 JSON 範例。

範例 JSON 顯示定義

不論證明類型為何,JSON 顯示定義幾乎相同。 您只需要根據可驗證認證所擁有的宣告來調整標籤。 顯示定義的預期 JSON 是 display 集合的內部內容。 JSON 是集合,因此如果您想要支援多個地區設定,請以逗號作為分隔符新增多個專案。

{
    "locale": "en-US",
    "card": {
      "title": "Verified Credential Expert",
      "issuedBy": "Microsoft",
      "backgroundColor": "#000000",
      "textColor": "#ffffff",
      "logo": {
        "uri": "https://didcustomerplayground.blob.core.windows.net/public/VerifiedCredentialExpert_icon.png",
        "description": "Verified Credential Expert Logo"
      },
      "description": "Use your verified credential to prove to anyone that you know all about verifiable credentials."
    },
    "consent": {
      "title": "Do you want to get your Verified Credential?",
      "instructions": "Sign in with your account to get your card."
    },
    "claims": [
      {
        "claim": "vc.credentialSubject.userName",
        "label": "User name",
        "type": "String"
      },
      {
        "claim": "vc.credentialSubject.displayName",
        "label": "Display name",
        "type": "String"
      },
      {
        "claim": "vc.credentialSubject.firstName",
        "label": "First name",
        "type": "String"
      },
      {
        "claim": "vc.credentialSubject.lastName",
        "label": "Last name",
        "type": "String"
      }
    ]
}

範例 JSON 規則定義

JSON 證明定義應包含 idTokens 名稱、 OIDC組態詳細數據 (clientId、組態、redirectUri和 scope)和宣告對應區段。 規則定義的預期 JSON 是 rules 屬性的內部內容,其開頭為證明屬性。

下列範例中的宣告對應會要求您設定令牌,如識別提供者區段中標識元令牌中的宣告中所述

{
  "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": "userName",
            "required": true,
            "inputClaim": "$.upn",
            "indexed": true
          },
          {
            "outputClaim": "displayName",
            "required": true,
            "inputClaim": "$.name",
            "indexed": false
          },
          {
            "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"
    ]
  }
}

應用程式註冊

clientId 屬性是 OIDC 識別提供者中已註冊應用程式的應用程式識別碼。 針對 Microsoft Entra ID,您可以執行下列動作來建立應用程式:

  1. 在 Azure 入口網站中,移至 [Microsoft Entra ID]

  2. 選取 [應用程式註冊],選取 [新增註冊],然後為應用程式指定名稱。

    如果您只想讓租使用者中的帳戶能夠登入,請 選取 [在此目錄中的帳戶] 複選框。

  3. 在 [ 重新導向 URI] 中,選取 [公用用戶端/原生 ] [行動裝置和桌面],然後輸入 vcclient://openid/

如果您想要能夠測試 Microsoft Entra 令牌中的宣告,請執行下列動作:

  1. 在左窗格中,選取 [驗證>新增平臺>Web]。

  2. 針對 [重新導向 URI],輸入 https://jwt.ms,然後選取 [標識符令牌] (用於隱含和混合式流程)。

  3. 選取設定

完成測試標識元令牌之後,請考慮移除 https://jwt.ms 和隱含和混合式流程的支援

針對 Microsoft Entra ID:您可以測試應用程式註冊,而且,如果您已啟用重新導向 https://jwt.ms至 的支援,您可以在瀏覽器中執行下列命令來取得標識元令牌:

https://login.microsoftonline.com/<your-tenantId>/oauth2/v2.0/authorize?client_id=<your-appId>&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid%20profile&response_type=id_token&prompt=login

在程式代碼中,將your-tenantId>取代<為您的租用戶標識碼。 若要取得額外的宣告,您必須有配置檔作為範圍的一部分

針對 Azure Active Directory B2C:應用程式註冊程式相同,但 B2C 在 Azure 入口網站 內建支援,可透過執行使用者流程功能來測試 B2C 原則。

來自識別提供者的標識碼令牌中的宣告

宣告必須存在於傳回的識別提供者中,才能成功填入可驗證的認證。

如果宣告不存在,則發行的可驗證認證中沒有值。 如果宣告在配置檔中有 Null 值,大多數 OIDC 識別提供者不會在標識元令牌中發出宣告。 請務必在標識元令牌定義中包含宣告,並確定您已在使用者配置檔中輸入宣告的值。

針對 Microsoft Entra ID:若要設定要包含在令牌中的宣告,請參閱 為您的應用程式提供選擇性宣告。 組態是每個應用程式,因此此組態應該適用於規則定義中用戶端識別碼中指定的應用程式識別碼。

若要符合顯示和規則定義,您應該讓應用程式的 optionalClaims JSON 看起來如下所示:

"optionalClaims": {
    "idToken": [
        {
            "name": "upn",
            "source": null,
            "essential": false,
            "additionalProperties": []
        },
        {
            "name": "family_name",
            "source": null,
            "essential": false,
            "additionalProperties": []
        },
        {
            "name": "given_name",
            "source": null,
            "essential": false,
            "additionalProperties": []
        },
        {
            "name": "preferred_username",
            "source": null,
            "essential": false,
            "additionalProperties": []
        }
    ],
    "accessToken": [],
    "saml2Token": []
},

針對 Azure Active Directory B2C:在您的標識碼令牌中設定其他宣告取決於 B2C 原則是 使用者流程 還是 自定義原則。 如需使用者流程的相關信息,請參閱 在 Azure Active Directory B2C 中設定註冊和登入流程。 如需自定義原則的相關信息,請參閱 為您的應用程式提供選擇性宣告。

如需其他識別提供者,請參閱相關文件。

設定範例以發出並驗證您的自定義認證

若要設定範例程式代碼以發出並驗證您的自訂認證,您需要:

  • 租使用者的簽發者分散式標識碼 (DID)
  • 認證類型
  • 認證的指令清單 URL

若要尋找自定義認證這項資訊,最簡單的方式是在 Azure 入口網站 中移至您的認證。 選取 [ 發出認證]。 然後,您可以存取具有要求服務 API JSON 承載的文字框。 將佔位元值取代為您的環境資訊。 簽發者的 DID 是授權單位值。

快速入門自定義認證問題的螢幕快照。

下一步

請參閱規則和顯示定義參考