デジタル身分証ナレッジベース(事業者向け)

1.デジタル身分証の全体像

■サービス概要
デジタル身分証のサービス視点での説明はプロダクトLP自治体向けLPがありますのでそちらをご覧ください。
デジタル身分証は、ユーザーからデジタル身分証作成依頼を受け、TRUSTDOCKが本人確認を行ったのちにユーザーに対して提供しています。
提供されたデジタル身分証は、デジタル
身分証が利用できるオンライン等のサービスにて利用することができます。具体的なユースケースはユースケース集をご覧ください。

自治体LP-デジタル身分証について
■デジタル身分証の主な機能
デジタル身分証は、TRUSTDOCKによる本人確認を済ませたユーザー(当人性が確保されたユーザー)の情報をOpenID Connectを用いて連携するため、正確な情報を、ユーザー本人の同意に基づき、安全に連携することができます。
その特徴を活かして、パスワードレス認証と、個人データ連携の2つの機能を提供しています。


これに加えて、デジタル身分証の作成・利用できる専用アプリ「TRUSTDOCK」には、画面ロック解除機能が備わっているため、他人によるなりすまし操作などのリスクも低減できるようになっています。


■主要技術
デジタル身分証はOpenID Connectという、世界で広く用いられている標準化技術を用いてユーザーに関する情報を連携します。OpenID ConnectはOpenIDファウンデーション・ジャパンをはじめ様々なところで開発に役立つ情報を得ることができます。
デジタル身分証の機能を利用する際、弊社が提供するAPIを組み込むことになりますが、このAPIはOpenID Connectに基づいて作られています。

■デジタル身分証導入時の開発する範囲
デジタル身分証を利用した際の開発の範囲は、RPとして必要な機能・処理となります。
具体的には、TRUSTDOCKが提供するAPIの
組み込みと、APIのレスポンスに含まれるユーザーの認証認可情報をどのように扱うかの処理も含みます。
OpenID Connectに基づく必要な実装は後述します。

2.デジタル身分証の使用の流れ

■デジタル身分証は他のオンラインサービスの導線に組み込んで使用する
デジタル身分証の機能であるパスワードレス認証や個人データ連携は、基本的に他のオンラインサービスの導線に組み込んで使用する形となります。
以下に例を示します。


■デジタル身分証はWebブラウザ、スマートフォンアプリのどのオンラインサービス提供形態にも対応可能
デジタル身分証は様々なユースケースで利用できるよう、
Webブラウザ、スマートフォンアプリのどのオンラインサービス提供形態にも対応可能で、以下の3パターンのいずれかを選択することになります。

デジタル身分証利用パターン 概要 備考
PC Webブラウザ TRUSTDOCKが提供するJavaScriptで作られたSDKを導入企業のWebサイトに組み込み、TRUSTDOCKアプリを呼び出せるようにします PCの利用者とスマートフォンの利用者が同一時点で同一人物であることを確かにするため、PCで時限のPINコードを表示し、スマートフォンで入力する操作が別途あります
スマートフォンWebブラウザ 同上
スマートフォンアプリ RPのアプリからTRUSTDOCKアプリを呼び出せるようにします

■デジタル身分証利用の流れを画面遷移で見る

<スマートフォンWebブラウザ>


<スマートフォンアプリ>


■デジタル身分証の流れを詳しく見る

<PC Webブラウザ>


<スマホWebブラウザ>


<スマートフォンアプリ>

3.提供するAPI

デジタル身分証を組み込む際にはTRUSTDOCKが提供するAPIをご利用いただくことになります。
以下にAPIの一覧を示します。
リクエスト/レスポンス等の実装に必要な情報については、NDA締結後に共有させていただきます。

API 解説 備考

Discovery
(構成情報の取得)

RPがOPとの適切な連携を行えるようにするため、OPの構成情報(スペック)を取得します
Authorization
(認証・認可フローの開始)
(RPがスマートフォンアプリの場合のみ使用します)RPからOPに連携処理を行う際に通知します
JSON Web Key Set
(JWKセットの取得)
OPがRPに提供するIDトークンの検証を行うため、OPからJWKを取得します
Token
(トークンの発行)
OPからIDトークンやアクセストークンを取得します アクセストークンを取得するためには認可コードが必要になります
Userinfo
(ユーザー情報の取得)
OPからアクセストークンを用いてユーザー情報を取得します

 

4.必要な実装

デジタル身分証を組み込むにあたり必要な実装についてまとめました。

カテゴリ 実装内容 解説
必要な実装 OPの構成情報取得APIで構成情報を取得する 構成情報には各種エンドポイントやサポートしているresponse_typeなど、他のAPIを利用にするにあたり必要な情報を得ることができます。
APIドキュメントにもエンドポイント情報は示していますが、実装としてはOPの構成情報取得APIを利用して得たエンドポイント情報の利用をお願いします
JWKセット取得APIでJWKを取得する 取得したJWKを用いて公開鍵を作成することができます。
具体的には、JWKに含まれる情報(nとeの値)をもとに公開鍵を作成します
IDトークンを署名検証する 作成できた公開鍵を用いてIDトークンの署名検証を行います。
具体的には、IDトークンをヘッダ部、ペイロード部、署名部の3つに分割(IDトークンの値にピリオド「.」がある箇所が分割する箇所)し、各部をBASE64デコードし、ヘッダ部の署名アルゴリズム情報と、デコードしていないIDトークンとペイロード部をピリオド「.」でつなげた値と、デコードした署名部と、作成した公開鍵の4つを用いて検証を行います。
検証に失敗した場合は改ざんのおそれがあると判断し、「連携データに問題があるため処理を中止します」等のメッセージをユーザーに提示し、処理を中断します
IDトークンを値の比較で検証する 以下の確認を行い、IDトークンを検証します。
いずれかで問題のある結果となった場合は問題があると判断し、「連携データに問題があるため処理を中止します」等のメッセージをユーザーに提示し、処理を中断します
  • 構成情報取得APIで得たissの値とIDトークンのペイロード部に含まれるissの値が一致すること(改ざん防止)
  • RPが指定したnonceの値がペイロード部に含まれるnonceの値と一致すること(リプレイアタック対策)
  • ペイロード部に含まれるaudの値に、OPから提供されたclient_idが含まれていること(他サービスとの誤連携防止)
IDトークンの有効期限を確認する 以下の確認を行い、IDトークンの有効性を確認します。
問題のある結果となった場合は無効なIDトークンが提供されたと判断し、再度デジタル身分証を利用する旨をユーザーに提示し、処理を中断します
  • ペイロードに含まれるexpの値がタイムスタンプの値より未来になっていること(IDトークン有効期限の確認)
IDトークンに含まれる識別子を得て管理する この値を管理することで、RPは初めての認証(ユーザー登録)か、2回目以降の認証(ログイン)かを識別することができます

 

5.実装時のチェックポイント

TRUSTDOCKが提供するAPIの組み込みができたら、以下のような観点でチェックし、組み込みが適切に行われていることをご確認ください。
※予めスマートフォンにTRUSTDOCKアプリをインストールし、デジタル身分証を作成しておかないとチェックすることはできません

デジタル身分証利用パターン チェックポイント
共通 OPの構成情報が取得できていること
JWKセットを取得し、公開鍵が作成できていること
作成した公開鍵を用いてIDトークンの検証ができていること
認可コードを用いてアクセストークンの取得ができていること
アクセストークンを用いてユーザー情報の取得ができていること
IDトークンから必要な情報を得て実現したかったRPの用途に用いていること
アクセストークンを元にして得たユーザー情報を用いて実現したかったRPの用途に用いていること

PC Webブラウザ

1.PC Webブラウザのオンラインサービスに設置したボタンを押すと、QRコードが表示されたポップアップが表示されること
2.ポップアップに表示されたQRコードをスマートフォンで読み込むと、スマートフォンのWebブラウザが起動し、同意確認画面が表示されること

3.スマートフォンに表示された同意確認画面で同意すると、TRUSTDOCKアプリが起動し、PCにはPINコードが表示されたポップアップが表示されること

4.TRUSTDOCKアプリの画面ロックを解除すると、PINコードを入力する画面が表示されること

5.ポップアップに表示されたPINコードをTRUSTDOCKアプリに入力すると、TRUSTDOCKアプリで提供完了画面が表示されること
6.TRUSTDOCKアプリで提供管理画面が表示されているときにPC画面では、RPとして実装した振る舞いになっていること
スマートフォンWebブラウザ 1.スマートフォンWebブラウザのオンラインサービスに設置したボタンを押すと、スマートフォンのWebブラウザが起動し、同意確認画面が表示されること
2.スマートフォンに表示された同意確認画面で同意すると、TRUSTDOCKアプリが起動されること
3.TRUSTDOCKアプリの画面ロックを解除すると、以降はRPとして実装した振る舞いになっていること
スマートフォンアプリ 1.スマートフォンアプリに設置したボタンを押すと、スマートフォンのWebブラウザが起動し、同意確認画面が表示されること
2.スマートフォンに表示された同意確認画面で同意すると、TRUSTDOCKアプリが起動されること
3.TRUSTDOCKアプリの画面ロックを解除すると、以降はRPとして実装した振る舞いになっていること

6.提供する開発サポート内容

開発時は以下のサポートを行います。
   
ナレッジベースの共有 本webページの内容となります。
こちらの内容はいつでも最新の情報をご覧いただくことができます。
導入実現可能性と開発規模の概算見積もりから実装時の参考まで幅広くお使いいただけます
APIドキュメントの共有 本webページの内容となります。
こちらの内容はいつでも最新の情報をご覧いただくことができます。
導入実現可能性と開発規模の概算見積もりから実装時の参考まで幅広くお使いいただけます
デジタル身分証の開発環境と本番環境の提供 デジタル身分証の導入を検討している、もしくは導入を決定した場合、デジタル身分証サービス利用申込書兼請書という文書を通じて、デジタル身分証の開発環境及び本番環境利用に必要な情報を提供します
問い合わせ対応 TRUSTDOCKの営業日10〜17時に、所定の方法にて、実装時に気になったことなどを質問等いただくことができます。NDA締結後案内させていただきます

7.よくある質問

カテゴリ 質問 回答
導入検討 デジタル身分証の導入にはどのくらい期間をみておくとよいでしょうか これまでの導入実績からみますと、仕様把握からテスト完了まで1ヶ月ほどみていただければと存じますが、OAuthやOpenID Connectの導入経験のある方がいらっしゃればよりスムーズに導入いただくことができると考えています
デジタル身分証の操作感などを事前に確かめる方法はあるでしょうか 導入判断に向けて必要となる場合は開発環境の提供を行っています。TRUSTDOCKの担当営業にご相談ください。
導入判断より手前でイメージを掴みたい方は、こちらのデモ動画をご覧ください
導入実績が知りたい 導入事例を説明をさせていただきますので、お問い合わせをお願いいたします
デジタル身分証を導入したことによる効果を確認したい 富山県で行った実証実験(PoC)にて効果検証をしています(解説動画)
価格について知りたい 価格を含めた説明をさせていただきますので、お問い合わせをお願いいたします
デジタル身分証を自社プロダクト等と組み合わせて、他の事業者等に提案を行いたいが、どのように進めればいいか 座組みを含めた説明をさせていただきますので、お問い合わせをお願いいたします
RPとしての実装を楽に実現する方法はないか OpenID Foundationには認定済みのライブラリがありますので、そちらをご利用いただければ実装の負担を軽減することができます
開発 IDトークンの検証など実装が重たいです OpenID Foundationには認定済みのライブラリがありますので、そちらをご利用いただければ実装の負担を軽減することができます
APIの組み込みを行ったがエラーが返ってきます 一番よくいただくお問い合わせですが、ほとんどの場合必須としているリクエストパラメータ不足が原因です。
APIドキュメントに詳細を示していますので、再度ご確認いただければと存じます
APIの組み込みを行ったが本ナレッジベースでで示した通り画面遷移しません APIの組み込みがデジタル身分証利用パターンに合っていない組み込み方をしている可能性があります。
デジタル身分証はPC Webブラウザ、スマートフォンWebブラウザ、スマートフォンアプリの3つのパターンいずれにも対応していますが、例えばスマートフォンアプリとデジタル身分証を組み合わせる際にはauthorization APIを利用していただく必要があります

8.用語集

用語 解説
OP OpenID Providerの略で、このナレッジベースにおいてはデジタル身分証を提供するTRUSTDOCKのことを指す
RP Relying Partyの略で、OPから連携された情報を用いてユーザーに対してサービス提供を行う事業者等を指す