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

概要

NFC認証レポートは、Diditが書類のNFCチップ(ePassport、電子IDカード、またはその他のICAO 9303準拠の電子書類)から読み取り、検証した内容を記録したものです。チップに格納された身元情報、暗号学的な完全性チェック(SODおよびData Groupのハッシュ)、発行国が使用するDocument Signer Certificate(DSC)の概要が含まれます。 このレポートは、ユーザーがワークフロー内のNFCステップを完了した後に生成されます。Diditはユーザーのデバイス上でチップのData Groupを読み取り、Document Security Object(SOD)の署名を発行国のCSCA証明書で検証し、各Data GroupのハッシュをSODが署名した値と照合したうえで、チップのMRZを書類の表面からOCRで読み取ったMRZと突き合わせます。 マイナンバーカードは代わりにJPKIを通じて読み取られます(chip_protocol: "jpki")。そのレポートでは、証明書、署名、失効、保有者データのチェックがjpkiの下に格納され、ICAOのフィールドはnullのままです。マイナンバーカード(JPKI)を参照してください。 各レポートは、セッション全体のステータスとは独立した独自のstatusを持ち、NFCステップ単体がどのように判定されたかを示します。
  • Approved: チップが読み取られ、発生した警告のうち、ステップをレビューまたは却下に振り分けるよう設定されたものが1つもない状態です。
  • In Review: 設定されたアクションがReviewである警告が少なくとも1つ発生した状態です(例: 未検証チップのアクションがレビューに設定されている場合のNFC_CHIP_NOT_VERIFIEDやNFC_TRUST_ANCHOR_MISSING、またはデフォルトのアクションのままのJPKI_REVOCATION_UNCHECKED)。
  • 却下: 設定されたアクションが却下である警告が少なくとも1つ発生した状態です(例: データ不一致のアクションが却下に設定されている場合のNFC_AND_OCR_DATA_NOT_SAME)。
  • Not Finished: ユーザーがNFCステップを完了しなかった状態です。チップの読み取りが放棄されたか、デバイスがNFCに対応していませんでした。
  • Resub Requested: レビュアーがユーザーに再提出を求めた状態です。このレポートは新しい試行によって置き換えられます。

APIレスポンス内での表示箇所

NFCレポートはnfc_verifications[]配列の中で返されます。これは常にJSON配列であり、単数形のnfcオブジェクトになることはありません。ワークフローがNFCを複数回実行する場合(例: ステップアップフロー)は複数のエントリが含まれ、各エントリはそれぞれ独自のnode_idを持ちます。
  • セッション判定API: GET /v3/session/{sessionId}/decision/のトップレベルにnfc_verifications[]として含まれます。セッション判定の取得を参照してください。
  • Webhook: NFCステップがデータを生成すると、status.updatedペイロードに同じnfc_verifications[]配列が含まれます。Webhookを参照してください。
  • スタンドアロンNFC: チップを直接送信する場合は、NFCの概要を参照してください。
ワークフローに含まれるNFCステップがスキップまたはバイパスされた場合、判定ペイロードにはトップレベルのnfc_skip_reasonフィールドも含まれ、その理由が正確に示されます。理由は、書類にチップがない、発行国の証明書が利用できない、デバイスにNFCリーダーがない、ネイティブSDKなしで認証が実行された(ブラウザからはNFCにアクセスできない)、MRZからチップのアクセスキーを導出できなかった、マイナンバーカードをJPKIで読み取れなかった、またはユーザーがスキップを選択した、のいずれかです。この分類に当てはまらない場合はnullのままです。最も多いのは、ユーザーが試行の途中で放棄した場合(レポートのステータスはNot Finished)や、NFCがまだ保留中のセッションです。正確な値についてはスキップ理由を参照してください。
以前のドキュメントでは単数形のnfcフィールドが参照されていました。この形式はv3の判定エンドポイントには存在しません。V2 Webhookに明示的に固定されている送信先でのみ現れ、このフィールドにはchip_protocolとjpkiも含まれます。常にresponse.nfc_verifications[0]を読み取り、配列を反復処理してください。

スキーマ

フィールドごとの正式なスキーマは、データモデルのリファレンスページにあります。以下のフィールドは、その正式なスキーマと同じ内容です。

ステータスの値

2つの証明書の警告(DSC_CERTIFICATE_REVOKED、DSC_CERTIFICATE_EXPIRED)は情報提供のためのものです。warnings[]には表示されますが、それ単独でNFCのstatusが変わることはありません。動作の一覧はNFCの警告を参照してください。

例

Approved: チップの読み取りに成功し、暗号学的にも有効

Declined: OCRとチップのデータの不一致

マイナンバーカード (JPKI)

ネイティブSDKでは、マイナンバーカードはJPKIを通じて読み取られます。本人がカードのPINを入力し、カードがワンタイムチャレンジに署名します(仕組みを参照)。そのレポートはchip_protocol: "jpki"となり、証拠をjpkiの下に格納します。カードにはICAOデータが含まれないため、portrait_image、signature_image、chip_data、authenticity、certificate_summaryはnullになります。
JPKIによるマイナンバーカードの読み取りは、本番環境ではまだ有効になっていません。有効になるまでは、マイナンバーカードはスキップ理由JPKI_UNAVAILABLEでNFCステップをスキップします。

JPKIフィールド

レポートには、証明書そのもの、そのシリアル番号、署名、およびカードの12桁の個人番号(マイナンバー)が含まれることはありません。個人番号はNFCステップで読み取られることもありません。

マイナンバーカードの読み取り例

読み取り時に失効確認が利用できなかった場合、同じレポートはrevocation_status: "unchecked"となり、JPKI_REVOCATION_UNCHECKED警告が付き、デフォルト設定ではstatus: "In Review"になります。NFCの警告を参照してください。

セキュリティに関する注意

NFCチップのデータは発行機関によって署名されているため、sod_integrity: trueかつdg_integrity: trueの承認済みレポートは、Diditが提供できる最も強力な本人確認の証拠です。署名付き画像URL(portrait_image、signature_image)は短期間のみ有効なものとして扱ってください。速やかにダウンロードし、公開される場所にキャッシュしないでください。新しいリンクが必要な場合は、判定を再度リクエストしてください。

関連情報

  • NFCの警告:警告のenum、原因、対処方法の一覧。
  • Webhook:status.updatedイベントをリッスンしてNFCレポートを受け取ります。
  • データモデル:NFC認証:すべてのフィールドを含む正式なスキーマ。
  • 対応書類:DiditがNFCで読み取れる電子書類。
最終更新日 2026年11月1日