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

Auth Principal クレーム

authPrincipalクレームは、あらゆるDID Connectセッションの基盤です。これは最も基本的で一般的に使用されるクレームであり、ユーザーにウォレットを接続し、アプリケーションと対話するための分散型識別子(DID)を選択するよう求めるように設計されています。この最初のステップで安全なセッ

authPrincipalクレームは、あらゆるDID Connectセッションの基盤です。これは最も基本的で一般的に使用されるクレームであり、ユーザーにウォレットを接続し、アプリケーションと対話するための分散型識別子(DID)を選択するよう求めるように設計されています。この最初のステップで安全なセッションが確立され、アプリケーションにユーザーのプライマリDIDが提供されます。その後のすべての対話は、このDIDに基づいて構築されます。

これは「ウォレットでログイン」ボタンのようなものだと考えてください。特定の個人データを要求するのではなく、単にユーザーがアカウントを選択して自身を識別することを要求します。

使用する場面

ユーザーとの対話が必要なほとんどすべてのワークフローの最初のステップとして、authPrincipalクレームを使用する必要があります。これには以下が含まれます:

  • ユーザーログイン: 最も基本的なユースケースで、ユーザーがアプリケーションにサインインできるようにします。
  • セッションの開始: 後でより具体的な情報やアクション(例:トランザクションへの署名やクレデンシャルの提示)を要求する複数ステップのプロセスを開始します。
  • コンテキストの確立: ユーザーエクスペリエンスをパーソナライズしたり、そのDIDに関連付けられた既存のデータを確認したりするために、ユーザーのDIDを知る必要がある場合。

パラメータ

authPrincipalクレームは、ニーズに合わせてリクエストを調整するために、以下のパラメータで設定できます。

パラメータタイプ説明
descriptionstring必須。 ユーザーのウォレットに表示されるメッセージで、接続を求められる理由を説明します。デフォルトは:"Please continue with your account"です。
targetstring任意。ウォレットが使用すべき特定のDIDを提案します。ユーザーがそのDIDを所有していない場合や、別のDIDを選択した場合、ウォレットはこの提案を無視することがあります。
supervisedboolean任意。trueに設定すると、ウォレットが別のDIDの代理として機能する委任接続シナリオを示します。デフォルトはfalseです。
targetTypeobject任意。選択されるDIDの望ましいプロパティを指定するオブジェクト。これは、特定の暗号特性を持つDIDを要求するのに役立ちます。

Target Type フィールド

targetTypeオブジェクトには、ユーザーに提示されるDIDをフィルタリングするために、次のフィールドを含めることができます:

フィールドタイプ説明
keystring望ましいキータイプ。有効な値:"ed25519""secp256k1""ethereum"。デフォルトは"ed25519"です。
hashstring望ましいハッシュ関数。有効な値:"sha3""keccak""sha2"。デフォルトは"sha3"です。
rolestring望ましいウォレットアカウントのロールタイプ。有効な値には"account""node""application""smart_contract"などが含まれます。デフォルトは"account"です。
encodingstring望ましいエンコーディング形式。有効な値:"base58""base16"。デフォルトは"base58"です。

使用例

標準アカウントでの接続をユーザーに要求する方法は次のとおりです。これは通常、DID Connect設定のclaims配列内で行われます。

基本的な接続を要求する

javascript
const claims = {
  authPrincipal: {
    description: 'Sign in to our awesome app',
  },
};

// このclaimsオブジェクトは、WalletAuthenticatorインスタンスによって使用されます
// ユーザーがスキャンするためのQRコードを生成する際に。

例:特定のタイプのDIDを要求する

アプリケーションが特定のブロックチェーンと対話する必要がある場合や、特定のキータイプが必要な場合は、targetTypeを使用できます。

Ethereum互換のDIDを要求する

javascript
const claims = {
  authPrincipal: {
    description: 'Connect your Ethereum-compatible account',
    targetType: {
      key: 'ethereum',
      role: 'account',
    },
  },
};

ウォレットの応答

ユーザーがQRコードをスキャンし、ウォレットでリクエストを承認すると、アプリケーションのonConnectおよびonAuthハンドラーがトリガーされます。onAuthコールバックは、ユーザーが選択したDIDと公開鍵を含むセッションオブジェクトを受け取ります。

onAuthコールバックの例

javascript
const handlers = new WalletHandlers({
  // ...他のハンドラー
  onAuth: async (session) => {
    console.log('ユーザーが接続しました!', session);
    // sessionオブジェクトには以下が含まれます:
    // session.userDid - 例:'z1...'(ユーザーのアドレス)
    // session.userPk - ユーザーの公開鍵(base58形式)

    // これでデータベースにユーザーセッションを作成したり
    // ワークフローの次のステップに進むことができます。
  },
});

次のステップ

authPrincipalクレームでセッションが確立されると、ユーザーにさらに詳細な情報やアクションを要求することができます。一般的な次のステップには以下が含まれます: