認証トークンを作成
概要
デジタルウォレットのバックエンドは、次のケースで認証トークンを生成する必要があります。
グリーンフロー登録をサポートするため。
追加のウォレットデータ(イシュアのリスクスコアリング)を提供するため。
デジタルウォレットのバックエンドは、秘密鍵で認証トークンに署名します。
NFC Wallet バックエンドは、オンボーディング時に提供された対応する公開鍵でトークンを検証します。
認証トークンはデジタルウォレットのバックエンドで生成し、その後デジタルウォレットアプリケーションに渡します。
グリーンフロー登録
このトークンは、イシュアが以前にエンドユーザーを認証し、トークン化リクエストを承認したことを証明します。
追加のウォレットデータ
認証トークンにより、デジタルウォレットは追加データを安全に提供できます。これにより、途中の仲介者が追加データを改ざんしないようにできます。
参照 追加のウォレットデータを提供する.
認証トークンの要件
認証トークンは JWT(RFC 7519).
JWT は、署名済みクレームをシステム間で送信するための標準形式です。
サポートされているアルゴリズム
NFC Wallet バックエンドは、次の署名アルゴリズムをサポートしています。
RS256PS256PS512
JWT 形式
JWT は、ドットで区切られた 3 つの Base64URL エンコードされた部分で構成されます(.):
ヘッダー
ペイロード
署名
コンパクト形式は次のとおりです。
<header>.<payload>.<signature>
ヘッダー
ヘッダーはトークンの種類と署名アルゴリズムを定義します。
kid は必須です。NFC Wallet バックエンドは、これを使用して正しい公開鍵を選択します。
ヘッダーの例:
署名を生成する前に、ヘッダーを 1 行にして Base64URL エンコードします。
ペイロード
ペイロードは次のクレームをサポートしています。
iss
必須
イシュア識別子。オンボーディング時に割り当てられた issuerId を使用します。
sub
条件付き
次の場合のみ必須 nonce が暗号化されたカードデータに含まれている。値は、 nonce.
ペイロードの例:
上記の例では、
subはb776ce1e1b00be3f03c7fff59d872c32cfd65cc4377766f47af84f48ea8925f2です。これは、nonce値の SHA-256 ハッシュです。abdda9cfbe2fdce335290773ba6f56a9c5ebe64910.
署名
イシュアのバックエンド秘密鍵を使用して、Base64URL エンコードされたヘッダーとペイロードに対する署名を計算します。
NFC Wallet バックエンドは、オンボーディング時に提供された公開鍵で署名を検証します。
最終的な JWT は、エンコードされたヘッダー、ペイロード、署名をドットで区切って連結したものです。
JWT を生成する
RSA 署名とカスタムヘッダーをサポートする任意の JWT ライブラリを使用できます。
この例では jose4j Java ライブラリを使用します。
参照 サポートされている実装の JWT ライブラリ(言語別)
最終更新
役に立ちましたか?