分享方式:


建立識別碼權杖的可驗認證

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

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

在 Azure 入口網站中,當您選取 [新增認證] 時,有選項可讓您啟動兩個快速入門。 選取 [自訂認證],然後選取 [下一步]

用於建立自訂認證的 [核發認證] 快速入門螢幕擷取畫面。

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

[建立新的認證] 頁面的螢幕擷取畫面,其中顯示用於顯示和規則檔案的 JSON 範例。

範例 JSON 顯示定義

不論證明類型為何,JSON 顯示定義幾乎相同。 您只需要根據可驗認證具有的宣告來調整標籤。 顯示定義的預期 JSON 是顯示集合的內部內容。 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、configuration、redirectUri 和 scope) 以及宣告對應區段。 規則定義的預期 JSON 是規則屬性的內部內容,開頭為證明屬性。

下列範例中的宣告對應需要您設定權杖,如來自識別提供者的識別碼權杖中的宣告一節所述。

{
  "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": "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> 換成您的租用戶識別碼。 若要取得額外的宣告,您在 scope 中需要有 profile

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 是授權單位值。

快速入門自訂認證核發的螢幕擷取畫面。

下一步

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