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

プロファイルクレーム

プロファイルクレームは、ユーザーのDIDウォレットから個人情報を要求するために使用されます。これは多くのアプリケーションにとって基本的なステップであり、ユーザーの明確な同意を得てユーザーデータを安全に取得することにより、ユーザー登録、パーソナライズされた体験、コミュニケーションなどの機能を可能にします。

構造

profile クレームオブジェクトは、以下のパラメータで構成されます。

パラメータタイプ説明
descriptionstring必須。ユーザーのウォレットに表示されるメッセージで、プロファイル情報が要求される理由を説明します。例:「アカウントを作成するためにプロファイルを提供してください。」
itemsstring[]要求するプロファイルフィールドを指定する配列。デフォルトは ['fullName'] です。すべてのオプションについては、以下の「利用可能なプロファイルフィールド」テーブルを参照してください。キー fieldsitems のエイリアスとしても使用できます。
metaany任意。クレームに関連付けたいカスタムメタデータ。これはウォレットには送信されませんが、アプリケーションのロジックで使用できます。

利用可能なプロファイルフィールド

items 配列で、以下のフィールドの任意の組み合わせを要求できます。

フィールド説明
didユーザーの分散型識別子。
fullNameユーザーのフルネーム。
emailユーザーのメールアドレス。
phoneユーザーの電話番号。
signatureDIDの所有権を証明する署名。
avatarユーザーのアバター画像へのURL。
birthdayユーザーの生年月日。
urlユーザーの個人ウェブサイトまたはプロファイルへのURL。

例:ユーザー名とメールアドレスの要求

ユーザーのフルネームとメールアドレスを要求するようにDID Connectハンドラを構成する方法は次のとおりです。これは、単純なログインまたは登録フローの一般的なパターンです。

DID Connect Handler

javascript
const { WalletHandlers } = require('@arcblock/did-connect');

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

app.get('/api/auth/login', handlers.createAuthUrl({
  claims: {
    profile: {
      description: 'サインアップするには、名前とメールアドレスを提供してください。',
      items: ['fullName', 'email'],
    }
  },
  onAuth: async ({ userDid, userPk, claims }) => {
    // 'claims' 配列にはユーザーのプロファイルデータが含まれます
    const profileData = claims.find(c => c.type === 'profile');
    console.log('User DID:', userDid);
    console.log('Profile Data:', profileData);

    // TODO: 提供された情報を使用して、データベースでユーザーを検索または作成します
  }
}));

この例では:

  1. claims オブジェクト内に profile クレームを定義します。
  2. description は、ウォレット内のユーザーにコンテキストを提供します。
  3. items 配列は、fullNameemail が必要であることを指定します。
  4. onAuth コールバックは、要求されたプロファイル情報を含む claims 配列を含むウォレットの応答を受け取ります。

ウォレットの応答

ユーザーがDIDウォレットで要求を承認すると、onAuth コールバックは要求されたデータを含むペイロードを受け取ります。claims 配列には、ユーザー情報を含む profile タイプのオブジェクトが保持されます。

Wallet Response Example

json
{
  "userDid": "z8ia29UsENBg6tLZUKi2HABj38Cw1LmHZocbQ",
  "userPk": "...",
  "claims": [
    {
      "type": "profile",
      "fullName": "Alice",
      "email": "alice@example.com",
      "meta": {}
    }
  ],
  "challenge": "...",
  "status": "ok"
}

アプリケーションは、このデータを使用してアカウントをプロビジョニングしたり、ユーザーエクスペリエンスをパーソナライズしたり、必要に応じて他のアクションを実行したりできます。

次のステップ

プロファイルクレームでユーザーを識別した後、セキュリティに敏感な操作のためにDIDの制御を確認する必要がある場合があります。署名クレームは、この目的に最適なツールです。