メインコンテンツへスキップ

検証可能な資格情報クレーム

検証可能な資格情報(VC)は、保有者に関する何かを証明するために使用できる、改ざん防止のデジタル資格情報です。検証可能な資格情報クレームにより、アプリケーションはユーザーにDIDウォレットから特定のVCを提示してもらい、属性、資格、または権利を証明するよう要求できます。

これは、元の発行者に毎回連絡することなく情報を検証する強力な方法です。一般的なユースケースには、以下のようなものがあります。

  • ユーザーの生年月日を明かすことなく年齢を確認する。
  • 組織のメンバーシップを確認する。
  • チケットやパスの所有権を証明する。
  • 特定の成果や証明書に基づいてコンテンツへのアクセスを制限する。

検証可能な資格情報を要求する方法

検証可能な資格情報を要求するには、DID Connectセッションを作成する際に、claims 配列に verifiableCredential オブジェクトを含めます。ユーザーのウォレットから必要な正確な資格情報をフィルタリングするために、さまざまな基準を指定できます。

DID Connect Handler

javascript
const handlers = new WalletHandlers({
  authenticator,
  // ... その他の設定
});

app.get('/api/auth/login', async (req, res) => {
  const claims = {
    verifiableCredential: {
      description: '続行するには、Blocklet Server パスポートを提示してください。',
      filters: [
        {
          type: ['BlockletServerPassport'],
          trustedIssuers: ['zNKjDm4Xsoaffb19UE6Q_YOUR_ISSUER_DID_HERE'], // 発行者DIDの例
        },
      ],
    },
  };

  // ウォレットはユーザーに一致する資格情報の選択を促します
  return handlers.auth(req, res, claims);
});

パラメータ

verifiableCredential クレームオブジェクトは、要求を定義するために次のパラメータを受け入れます。

ParameterTypeDescription
descriptionstring必須。 ユーザーのウォレットに表示されるメッセージで、資格情報が要求される理由を説明します。
optionalbooleantrue に設定すると、ユーザーはこのクレームをスキップしても続行できます。デフォルトは false です。
filtersarrayフィルターオブジェクトの配列。ウォレットは、いずれかのフィルターに一致する資格情報を見つけます(論理OR)。各フィルターオブジェクト内では、すべての条件が満たされる必要があります(論理AND)。これが推奨される現代的なアプローチです。
claimUrlstringユーザーが要求されているクレームに関する詳細情報を閲覧できるURL。
acquireUrlstringユーザーが必要な資格情報を持っていない場合に、それを取得するためにアクセスできるURL。

フィルターオブジェクトのパラメータ

filters 配列内の各オブジェクトには、次のフィールドを含めることができます。

ParameterTypeDescription
typestring[]許容されるVCタイプ名の配列。資格情報はこのリストのいずれかのタイプに一致する必要があります。
trustedIssuersstring[]DIDの配列。資格情報はこれらのDIDのいずれかによって発行されている必要があります。
targetstring資格情報が発行された対象者のDID。通常、これはユーザー自身のDIDです。
tagstring資格情報に存在する必要がある特定のタグ。
ownerDidstring[]資格情報を提示することが許可されているDIDの配列。

レガシーパラメータ

後方互換性のために、次のパラメータをクレームオブジェクトのトップレベルで使用できます。ただし、新しいアプリケーションでは filters 配列を使用することが推奨されるアプローチです。

  • item: (string[]) filters[0].type のエイリアス。
  • trustedIssuers: (string[]) filters[0].trustedIssuers のエイリアス。
  • target: (string) filters[0].target のエイリアス。
  • tag: (string) filters[0].tag のエイリアス。

タイプと発行者による資格情報の要求

これは最も一般的なユースケースです。どのような種類の資格情報が必要で、誰が発行したものを信頼するかを把握しています。

Request a specific VC

javascript
const claims = {
  verifiableCredential: () => ({
    description: 'Blocklet Server パスポートを提示してください。',
    filters: [
      {
        type: ['BlockletServerPassport'],
        trustedIssuers: ['zNKjDm4Xsoaffb19UE6QxVeevuaTaLCS1n1S'],
      },
    ],
  }),
};

複数の基準による資格情報の要求

複数のフィルターを提供することで、ユーザーにより多くの選択肢を与えることができます。例えば、ある発行者からのパスポートを受け入れるか、別の発行者からの特定のタグが付いたメンバーシップカードを受け入れる、といったことが可能です。

Request VC with multiple filters

javascript
const claims = {
  verifiableCredential: () => ({
    description: '有効なパスポートまたはタグ付きのメンバーシップカードを提示してください。',
    optional: true,
    filters: [
      // オプション1:信頼できる発行者からの特定の種類のパスポート
      {
        type: ['BlockletServerPassport'],
        trustedIssuers: ['zNKjDm4Xsoaffb19UE6QxVeevuaTaLCS1n1S'],
      },
      // オプション2:別の発行者からの特定のタグを持つ任意の資格情報
      {
        trustedIssuers: ['zNKoA97a922N4234UE6QxVeevuaTaLCS1abc'],
        tag: 'gold_member_card',
      },
    ],
  }),
};

この例では、ユーザーは最初の発行者からの BlockletServerPassport を提示するか、または2番目の発行者からの gold_member_card としてタグ付けされた任意の資格情報を提示することで、要求を満たすことができます。

検証可能な資格情報の要求に成功した後、別の種類のオンチェーンデータの所有権を要求することができます。次のセクションでその方法を学びましょう。

次へ:アセットクレーム

NFTなどのオンチェーンアセットを提示して所有権を証明するようユーザーに要求する方法を学びます。