パスキーは、パスワードに代わる安全性の高い認証方式です。
しかし、既存の会員サイトや業務システムへパスキーを追加するには、ブラウザ上でWebAuthn APIを呼び出すだけではありません。
パスキー登録用・認証用のChallenge生成、公開鍵とCredential情報の保存、署名検証、複数端末への対応、認証ログ、エラー処理など、フロントエンド、バックエンド、データベースにまたがる実装が必要です。
Push! Passkeyは、こうしたパスキー認証の専門領域を外部の認証基盤として提供し、既存のWebサイトからAPIで利用できるサービスです。
既存のユーザーDBやログイン後の業務処理はそのまま維持しながら、パスキーの登録と認証に必要な機能だけを追加できます。
このページでは、Push! Passkeyでできること、一般的な自営実装との違い、認証の仕組み、実装手順、管理サイトの機能について解説します。
パスキーを自社で直接実装する場合、WebAuthnの仕様を理解し、登録・認証処理をフロントエンドとバックエンドの両方へ実装する必要があります。
Push! Passkeyでは、パスキー登録とパスキー認証に必要な処理を、ジンテックが運用する認証基盤から提供します。
既存サイト側で行う主な作業は、次の3点です。
これにより、自社でWebAuthn認証基盤そのものを構築するのではなく、既存サイトのログインフローへパスキー認証結果を組み込むことができます。
Push! Passkeyでは、次の2つの基本機能を提供します。
既存サイトのユーザーと、利用者の端末に作成されたパスキーを紐付けます。
登録時には、Push! Passkey側で登録用Challengeの生成、WebAuthn登録結果の検証、Credential情報と公開鍵の保管を行います。
登録済みのパスキーを利用して、利用者本人であることを確認します。
認証時には、認証用Challengeの生成、端末から返された署名の検証、登録済みCredentialとの照合をPush! Passkey側で行います。
既存サイトは、Push! Passkeyから返された認証結果を確認し、認証成功後に自社サイトのログインセッションを発行します。
複数の会員サイト、業務システム、Webサービスを運営している事業者にも対応できます。
管理サイトでは、利用するWebサイトごとにAPI接続情報を管理し、それぞれのサイトで発生した登録・認証トランザクションを確認できます。
例えば、次のような情報を把握できます。
Push! Passkeyは、単にWebAuthn APIを実行するだけでなく、パスキーの利用状況を継続的に確認できる管理環境も提供します。
パスキーは、登録先となるWebサービスのRP IDに結び付けられます。
一般的な自営実装では、パスキーを導入するWebサイト自身がRPとなります。
例えば、example.comが自社でWebAuthnを直接実装した場合、原則として、そのドメインを基準としたパスキーが作成されます。
Push! Passkeyでは、パスキー登録・認証部分をジンテックの認証基盤へ外部化するため、パスキーのRPはジンテックが運用する認証ドメインになります。
利用者が既存サイトに設置されたパスキー登録または認証ボタンを押すと、Push! Passkeyの認証処理が開始されます。
パスキーの作成や署名検証は、Push! Passkeyの認証ドメインを基準として行われます。
これは、自社ドメイン内にFIDO2/WebAuthnを直接実装する方式ではありません。
ジンテックの認証ドメインでパスキー登録・認証を実行し、その処理結果をAPIを通じて既存サイトへ連携する方式です。
RPがジンテックの認証ドメインになる場合でも、既存サイトのユーザーDBやログイン後の権限管理がジンテック側へ移管されるわけではありません。
既存サイトには、次の役割が残ります。
Push! Passkeyが確認するのは、登録されたパスキーによる認証が正しく完了したかどうかです。
認証に成功した利用者へ、どの権限を与え、どのサービスを利用させるかは、既存サイト側で判断します。
完全な自営実装では、自社ドメインをRPとして、認証基盤を自由に設計できます。
一方、Push! Passkeyでは、ジンテックの認証基盤を利用することで、WebAuthnの複雑な処理を自社で構築・保守する負担を減らします。
その代わり、パスキーがジンテックの認証ドメインに対して登録されることを前提とした構成になります。
導入時には、次の点を整理します。
Push! Passkeyでは、これらの導入設計について事前相談に対応します。
自社でパスキーを直接実装する場合は、自社システムがRPとなり、パスキー認証基盤を自社で構築します。
自由度が高く、自社独自の認証ポリシーや端末制御を実装できる一方、パスキーに関する専門的な開発と継続的な保守が必要です。
主な実装項目は次のとおりです。
WebAuthn対応ライブラリを利用する場合でも、誰に登録を許可するか、どのようにユーザーとCredentialを紐付けるか、認証成功後にどのようなセッションを発行するかといった設計は自社に残ります。
Push! Passkeyでは、パスキー登録・認証に関する専門領域をジンテックの認証基盤へ切り出します。
Push! Passkey側では、主に次の処理を担当します。
既存サイト側は、次の処理を担当します。
| 比較項目 | 自社で直接実装 | Push! Passkey |
|---|---|---|
| RP | 自社ドメイン | ジンテックの認証ドメイン |
| 既存ユーザーDB | 自社で維持 | 自社で維持 |
| WebAuthnフロントエンド | 自社で実装 | 共通JavaScriptを利用 |
| Challenge管理 | 自社で実装 | Push! Passkeyが担当 |
| 登録結果の検証 | 自社で実装 | Push! Passkeyが担当 |
| 認証署名の検証 | 自社で実装 | Push! Passkeyが担当 |
| Credential DB | 自社で構築・管理 | Push! Passkeyが管理 |
| 登録・認証画面 | 自社で作成 | Push! Passkeyが提供 |
| ログ・トランザクション管理 | 自社で構築 | 管理サイトで確認 |
| ログインセッション | 自社で発行 | 自社で発行 |
| カスタマイズ性 | 高い | API仕様の範囲内 |
| 初期開発負荷 | 大きい | 小さくしやすい |
| 継続保守 | 自社で対応 | 認証基盤部分はジンテックが対応 |
| 導入相談 | 自社で設計 | ジンテックへ相談可能 |
完全自営では、自社がWebAuthn認証基盤そのものを作ります。
Push! Passkeyでは、すでに用意されたパスキー認証基盤へ既存サイトを接続します。
そのため、既存のユーザーDB、既存のログイン画面、ログイン後の業務システムを維持しながら、パスキー認証機能だけを追加しやすくなります。
特に、次のような事業者に適しています。
Push! Passkeyを利用する既存サイトには、パスキー登録ボタンまたはパスキー認証ボタンを設置します。
ボタンが押されると、既存サイト内に設置したバックエンドのエンドポイントを通じて、Push! PasskeyのAPIへ認証開始要求が送信されます。
APIキーなどの機密情報は、JavaScriptやHTMLには記載せず、既存サイトのバックエンド側で管理します。
登録または認証処理が開始されると、利用者はPush! Passkeyの認証画面へ遷移します。
その後、利用者のブラウザ、OS、Authenticatorと、Push! Passkeyの認証基盤との間でWebAuthn処理が行われます。
パスキー登録の場合は、端末側で公開鍵と秘密鍵の組み合わせが作成されます。
秘密鍵は利用者側の端末やパスキー管理環境で保護され、Push! Passkey側には公開鍵とCredential情報が保存されます。
パスキー認証の場合は、Push! Passkeyが発行したChallengeに対して、利用者の端末が秘密鍵で署名します。
Push! Passkeyは、登録済みの公開鍵を使って署名を検証します。
登録または認証が完了すると、Push! Passkeyは処理結果を既存サイトへ連携します。
既存サイトは、その結果を確認して、あらかじめ指定した成功画面へ利用者を遷移させます。
パスキー認証成功後に自社サイトのログイン状態を作る場合は、既存サイト側のバックエンドでログインセッションを発行します。
パスキー認証時に、秘密鍵そのものがPush! Passkeyや既存サイトへ送信されることはありません。
顔画像や指紋情報も、Push! Passkeyや既存サイトへ送信されません。
顔認証、指紋認証、PINは、利用者の端末内で秘密鍵の使用を許可するために利用されます。
Push! Passkeyが受け取るのは、秘密鍵によって作成された署名などのWebAuthn認証結果です。
最初に、Push! Passkeyの利用を申し込みます。
利用予定のWebサイト、現在のログイン方式、パスキーを利用する画面、ユーザー識別方法などを確認し、接続方法を整理します。
複数のWebサイトで利用する場合は、サイトごとの管理方法も事前に確認します。
利用開始の準備が完了すると、Push! Passkey管理サイトへログインするためのアカウント情報が発行されます。
管理サイトでは、API接続に必要な情報や、登録済みサイトの設定を確認できます。
管理サイトへログインし、利用するWebサイトに対応したAPIキーを取得します。
APIキーは、Push! Passkeyを利用する事業者とWebサイトを識別するための重要な情報です。
APIキーをHTMLやJavaScriptへ直接記載してはいけません。
必ず、ブラウザから内容を確認できないバックエンド側の設定ファイルで管理します。
Push! Passkeyでは、対応する開発環境向けのサンプルコードを提供します。
サンプルコードには、Push! Passkey APIとの通信、登録・認証処理の開始、結果確認、エラー処理などの基本的な実装が含まれます。
自社の開発環境に合わせて、必要なファイルをダウンロードします。
使用する言語やフレームワークに合わせて、次の役割を持つ構成要素を既存サイトへ実装します。
Push! Passkeyへの接続情報を設定するファイルです。
主に次の情報を設定します。
ユーザー識別子には、既存サイトでログイン中のユーザーID、UUID、または外部へ連携しても問題のない識別値を設定します。
APIキーは機密情報であるため、フロントエンドへ出力しないでください。
可能な場合は、ドキュメントルート外への配置や、環境変数による管理を推奨します。
フロントエンドのボタン操作を受け付け、Push! Passkey APIと通信するためのファイルです。
Push! Passkeyから提供されるサンプルコードをベースとして設置します。
フロントエンドのJavaScriptからは、このバックエンドエンドポイントのURLを指定します。
パスキー登録・認証ボタンを設置するHTMLのheadタグ内などで、Push! PasskeyのJavaScriptを読み込みます。
<script src="https://auth.jintec.com/js/passkey.js"></script>
このJavaScriptが、対象ボタンのクリックを検知し、既存サイトのバックエンドエンドポイントを通じてPush! Passkeyの処理を開始します。
パスキー登録ボタンを表示したい場所へ、次のようなHTMLを記述します。
<button type="button" class="push_btn" data-pushpasskey="regist" data-endpoint="/pushpasskey/endpoint" data-success-url="/regist_ok.html"> パスキー登録 </button>
各属性の役割は次のとおりです。
| 属性 | 役割 |
|---|---|
| data-pushpasskey | 実行する処理の種類を指定する。パスキー登録の場合はregistを指定する |
| data-endpoint | 既存サイト内に設置したバックエンドのエンドポイントを指定する |
| data-success-url | パスキー登録が正常に完了した後の遷移先URLを指定する |
パスキー認証ボタンを表示したい場所へ、次のようなHTMLを記述します。
<button type="button" class="push_btn auth" data-pushpasskey="auth" data-endpoint="/pushpasskey/endpoint" data-success-url="/auth_ok.html"> パスキー認証 </button>
パスキー認証の場合は、data-pushpasskeyへauthを指定します。
data-success-urlには、認証成功後に表示する画面を指定します。
実際の会員サイトでログイン状態を作成する場合は、画面を表示するだけでなく、バックエンド側で認証結果を確認し、自社のログインセッションを安全に発行する処理が必要です。
サンプルには、次のような成功後画面が含まれます。
regist_ok.html:パスキー登録成功後の画面auth_ok.html:パスキー認証成功後の画面実運用では、自社サイトのデザインと処理フローに合わせて変更します。
例えば、次のような画面へ遷移できます。
本番導入前に、次の項目を確認します。
| 実装領域 | 必要な対応 |
|---|---|
| フロントエンド | Push! PasskeyのJavaScriptを読み込み、登録・認証ボタンを設置する |
| バックエンド | APIキーをサーバー側で安全に保持し、顧客サイトのバックエンドエンドポイントを実装する |
| 認証後処理 | 認証結果に応じて自社のログインセッションや画面遷移を処理する |
これにより、既存サイトへパスキー登録とパスキー認証の導線を追加できます。
Push! Passkeyの管理サイトでは、サービスを利用するWebサイトの情報を管理します。
複数のWebサイトを運営している場合も、それぞれの接続設定を管理サイト上で確認できます。
WebサイトごとにAPI接続情報を分けることで、どのサイトから実行された登録・認証処理なのかを識別できます。
Push! Passkey APIを利用するためのAPIキーを管理サイトで確認します。
APIキーは外部へ公開せず、既存サイトのバックエンド側で安全に管理します。
APIキーの取り扱いについては、次の点に注意してください。
管理サイトでは、Push! Passkeyで実行された登録・認証処理の履歴を確認できます。
トランザクション情報を確認することで、導入後の利用状況やエラー発生状況を把握できます。
確認対象となる情報には、次のような項目があります。
これにより、どのWebサイトで、どれだけパスキーが利用されているかを確認できます。
管理サイトでは、Push! Passkeyを利用するユーザーや、登録されたパスキーに関する情報を確認できます。
運用上必要な範囲で、次のような確認を行います。
具体的に表示される項目や操作可能な範囲は、契約内容や管理権限によって異なる場合があります。
事業者内で複数の担当者がPush! Passkeyを管理する場合に備え、管理ユーザーを登録できます。
運用担当者、開発担当者、管理責任者など、社内体制に合わせて管理します。
管理サイト自体へのログインについても、安全な認証方法を用いて保護します。
管理サイトの具体的な操作方法については、Push! Passkey管理操作マニュアルで解説します。
管理操作マニュアルでは、主に次の内容を案内します。
Push! Passkeyは、既存の会員サイトや業務システムへ、パスキー登録・認証機能を追加するためのAPIサービスです。
自社でパスキーを直接実装する場合は、WebAuthn APIの呼び出しだけでなく、Challenge管理、登録結果の検証、署名検証、Credential DB、複数端末対応、ログ、復旧、互換性確認など、幅広い開発と運用が必要です。
Push! Passkeyを利用すると、これらのパスキー認証基盤をジンテック側へ切り出すことができます。
既存サイト側で必要となる基本構成は、次のとおりです。
既存のユーザーDBや業務システムを大きく変更するのではなく、パスキー登録・認証部分を外部サービスとして接続する構成です。
Push! Passkeyがパスキー認証に成功した場合でも、利用者の契約状態、権限、利用停止状態、ログイン後に利用できる機能は、既存サイト側で判断します。
Push! Passkeyはパスキーによる本人認証を担当し、既存サイトは自社サービスのユーザー管理と権限管理を担当します。
この責任分担により、既存システムの構成を維持しながら、パスキー認証の専門的な処理だけを外部化できます。
パスキーは、登録ボタンを設置するだけで運用設計まで自動的に完成するものではありません。
安全に導入するためには、登録を許可する条件、ユーザー識別子の連携、認証成功後のセッション発行、端末紛失時の復旧方法などを事前に整理する必要があります。
Push! Passkeyでは、現在のログイン方式やシステム構成を確認したうえで、導入方法の設計相談に対応します。
まずは既存サイトの一部画面や限定ユーザーから導入し、段階的にパスキーの利用範囲を広げることも可能です。
パスキーがなぜ安全なのか、顔認証・指紋認証・PINとの関係、公開鍵と秘密鍵の仕組み、フィッシングに強い理由を一般利用者向けに解説します。
WebAuthn、FIDO2、CTAP、RP、Client、Authenticatorの役割、自営実装に必要なフロントエンド・バックエンド・データベース・運用設計について詳しく解説します。
Push! Passkeyの登録・認証ボタンを設置したサンプルサイトで、基本的な動作を確認できます。
契約者向けの管理サイトでは、API接続情報、ユーザー情報、登録・認証トランザクションなどを確認できます。