認証情報発行用の Digital Credentials API

Natalia Markoborodova
Natalia Markoborodova

公開日: 2025 年 11 月 26 日

Chrome 143 以降では、Digital Credentials API の発行のオリジン トライアルに参加できます。この新しい API により、ウェブサイトからユーザーが選択したウォレットにデジタル認証情報を簡単にプロビジョニングできるようになります。

この作業が必要な理由

発行者、検証者(信頼当事者)、所有者(ウォレット)の 3 者からなるデジタル ID エコシステムでは、ユーザーがプッシュ プロビジョニングを通じてウォレットにデジタル ID をプロビジョニングするのが一般的です。このプロセスでは、ユーザーは発行者のウェブサイトまたはアプリから直接 ID 発行プロセスを開始します。たとえば、州の自動車部門(発行者)のウェブサイトにアクセスしたユーザーは、デバイス上の任意のウォレット アプリ(保有者)にデジタル ライセンスを保存するプロセスを開始できます。

このモデルを成功させるには、発行者がウォレット アプリと安全かつ確実に接続して ID を発行する方法が必要です。このプロセスは、各発行者が提携するすべてのウォレット アプリに対して独自の接続を構築する必要があり、通常はカスタム URI スキームに依存していたため、断片化されていました。このアプローチでは、実装に大きな摩擦が生じ、発行者はさまざまなウォレット統合の断片的なエコシステムのサポートを構築して維持することを余儀なくされました。

Digital Credentials API の発行

このプロセスを効率化するため、Chrome は W3C Digital Credentials API のサポートを拡大し、最近リリースされた提示機能を補完します。navigator.credentials.create() メソッドを使用すると、カード発行会社のウェブサイトが認証情報の発行のためにウォレット アプリを安全に呼び出すことができます。発行者のウェブサイトが digital メンバーを使用して navigator.credentials.create() を呼び出すと、ブラウザはフローをプラットフォームに委任します。Chrome 143 の時点では、このプラットフォームは Android に限定されています。プラットフォームには、デバイスにインストールされている対応ウォレットのリストが表示されます。その後、ウォレットを選択し、証明書を追加することに同意します。

Digital Credentials API の発行は、同じデバイス(モバイル)とクロスデバイス(パソコンで開始)の両方のシナリオで機能します。クロスデバイス シナリオでは、デスクトップ ブラウザに QR コードが表示されます。ユーザーがモバイル デバイスでコードをスキャンすると、両方のデバイスが近くにある場合、プラットフォームを介したフローが開始されます。

API の使用にあたっての注意事項

この API はプロトコルに依存せず、OpenID for Verifiable Credential Issuance(OpenID4VCI)標準などのオープン標準で動作するように設計されています。

発行フローを開始するには、カード発行会社のウェブサイトが navigator.credentials.create() を呼び出し、digital オブジェクト内で発行リクエストを渡す必要があります。例:

// Check if the browser supports Digital Credentials issuance and the protocol.
if (window.DigitalCredential && DigitalCredential.userAgentAllowsProtocol('openid4vci-v1')) {

  // Construct a credential offer according to the OpenID4VCI specification.
  // Note: The API is in an active development stage. Always consult the
  // specification and documentation for the most recent implementation details
  const credentialOffer = {
    credential_issuer: 'https://digital-credentials.dev',
    credential_configuration_ids: [
      'org.iso.18013.5.1.mDL'
    ],
    authorization_server_metadata: {
      issuer: 'https://digital-credentials.dev',
      token_endpoint: 'https://digital-credentials.dev/openid4vci/token',
      authorization_endpoint: 'https://digital-credentials.dev/openid4vci/auth',
      grant_types_supported: [
        'authorization_code',
        'urn:ietf:params:oauth:grant-type:pre-authorized_code'
      ],
      response_types_supported: ['code','token']
    },
    // Metadata details to help the wallet display the credential correctly.
    credential_issuer_metadata: {
      credential_endpoint: 'https://digital-credentials.dev/openid4vci/credential',
      credential_configurations_supported: {
        'org.iso.18013.5.1.mDL': {
          format: 'mso_mdoc',
          display: [{
            name: 'Driving License',
            locale: 'en-US',
            description: 'Mobile Driving License'
          }],
          // The claims that this document contains.
          // For a full list of standard mDL claims, see the ISO/IEC 18013-5 specification.
          claims: [{
            path: ['org.iso.18013.5.1', 'family_name'],
            display: [{ name: 'Family Name', locale: 'en-US' }]
          }
          // ... Add any other claims for your document here.
          ]
        }
      }
    }
  };

  // This call is made from the issuer's frontend, likely inside a button's click handler.
  try {
    await navigator.credentials.create({
      digital: {
        requests: [{
          // The protocol identifier for this version of OpenID4VCI.
          protocol: 'openid4vci-v1',
          data: credentialOffer
          }
        }]
      }
    });
    console.log('Credential issuance handoff to OS was successful.');
  } catch (e) {
    console.error('Error starting the credential issuance flow:', e);
  }

} else {
  // The API is not supported. Provide an alternative issuance method.
  console.log('Digital Credential Issuance API is not supported in this browser.');
}

試してみる

ブラウザと Android デバイスで Digital Credentials API をテストする前に:

  • パソコンで Chrome 143 以降に更新し、Android デバイスで Google Play 開発者サービス 24.0 以降をインストールします。
  • ブラウザの chrome://flags/#web-identity-digital-credentials-creation でフラグを有効にします。
  • Android デバイスにサポートされているウォレット アプリ(デモ CMWallet など)をインストールします。

デジタル認証情報を発行するクロスデバイス フローをテストするには:

  1. パソコンで https://digital-credentials.dev/dmv にアクセスします。
  2. [追加] ボタンを押して発行フローを開始します。
  3. Android デバイスで QR コードをスキャンし、画面の指示に沿って操作します。

この手順が完了すると、Android デバイスのウォレットに新しい認証情報が発行されます。

ウェブサイトでこの機能をユーザー向けに有効にするには、発行元トライアルのデジタル認証情報 API に参加してください。詳しくは、オリジン トライアルを使ってみるをご覧ください。

フィードバックをお寄せください

皆様からのフィードバックは、プラットフォームの継続的な改善に役立てさせていただきます。バグや機能リクエストは、Chromium のバグトラッカーからご報告ください。