このページでは、Push! Passkeyの導入前、実装中、テスト、本番運用でよくある質問をまとめています。
質問への回答だけでなく、関連する詳細ページへのリンクも掲載しています。
APIの正式な項目、エラーコード、サンプルコードについては、それぞれの専用ページもあわせて確認してください。
Push! Passkeyは、Webサイトへパスキー登録・認証機能を追加するための認証APIサービスです。
Challenge生成、WebAuthn登録結果の検証、認証署名の検証、Credential IDと公開鍵の管理、登録・認証画面、トランザクション管理、結果提供をPush! Passkey側で行います。
顧客サイト側では、自社ユーザーとの紐付け、登録前の本人確認、APIキー管理、認証結果確認、ログインセッション発行を行います。
同じものではありません。
パスキーは公開鍵暗号を利用した認証方式です。顔認証や指紋認証は、端末内の秘密鍵を利用する本人であることを確認するために使われます。
端末によっては、生体認証ではなくPIN、パターン、端末パスコードを使用します。
送信されません。
顔や指紋の情報は、OSや端末内の認証機能で処理されます。Push! Passkeyへ送信されるのは、WebAuthnの登録情報や署名結果です。
顧客サイトの運用方針によって異なります。
パスキーだけでログインする構成も可能ですが、初回登録、アカウント復旧、管理者確認、既存ユーザー移行などのために、一定期間パスワードやOTPを併用する場合があります。
パスワードを残す場合は、パスワード経路がパスキーより弱い侵入経路にならないよう注意してください。
顧客サイトのログインセッションは、顧客サイト側で発行します。
Push! Passkeyは登録・認証結果を提供します。顧客サイトは結果照会後にユーザー状態、権限、契約状態を確認し、自社のセッションを発行してください。
APIキーと利用ドメインを紐付け、許可された顧客サイトからの利用であることを管理するためです。
開発環境、検証環境、本番環境でドメインが異なる場合は、それぞれを分けて登録・管理してください。
環境ごとにAPIキーを分離することを推奨します。
開発用キーの漏えいや誤操作が本番へ影響しないよう、ドメイン、APIキー、ログ、ユーザーデータを分離してください。
顧客サイト内でユーザーを一意に識別でき、変更されにくく、別人へ再利用されない値を指定してください。
可能であれば、内部ユーザーIDから外部連携用の識別子を生成します。
メールアドレスは変更される可能性があり、個人情報でもあるため、直接利用する場合は運用上の影響を検討してください。
必要です。
パスキー登録は、新しいログイン手段をアカウントへ追加する重要操作です。
ログイン済みセッションの確認に加えて、既存パスキー、パスワード再入力、OTPなどによる追加確認を検討してください。
完了していません。
登録URLの発行は、登録トランザクションを開始するための処理です。
利用者が登録画面でパスキーを作成し、WebAuthn検証が成功し、結果照会APIでstatus=successを確認した時点で登録成功として扱います。
複数端末や複数の認証器を利用する運用では、複数パスキーの登録を許可する構成が考えられます。
登録上限、端末名の表示、最終利用日時、無効化方法は、顧客サイトの運用方針に合わせて設計してください。
ブラウザ、OS、認証情報プロバイダーの挙動によって異なります。
既存パスキーがある場合に新しいCredentialが作成されることもあります。顧客側では登録済み一覧と利用者向けの管理画面を準備することを推奨します。
登録結果は成功になりません。
結果照会でfailed、expired、処理中などの状態を確認し、必要に応じて再度登録URLを発行してください。
あります。
現在の仕様では、登録URLと認証URLの有効期限は発行から10分間です。
期限切れのURLは再利用せず、新しいURLを発行してください。
画面表示だけでログインさせてはいけません。
顧客バックエンドから結果照会APIを呼び出し、request_id、kind、user_key、status、判定フラグを確認してください。
使わないでください。
ログインに利用した結果は顧客サイト側で使用済みとして記録し、再利用を拒否してください。
あります。
Push! Passkeyの認証成功後でも、顧客サイト側で退会、利用停止、契約終了、権限不足と判断した場合はログインを拒否できます。
Chrome、Edge、Safariの最新安定版を推奨します。
FirefoxもWebAuthnを利用できますが、導入環境で登録・認証・認証器選択を実機確認してください。
Windows、macOS、iPhone、iPad、Androidなど、WebAuthnと端末の本人確認機能に対応した環境で利用できます。
Windows Hello、Touch ID、Face ID、指紋、PIN、端末パスコード、FIDO2セキュリティキーなどが利用されます。
利用できる場合があります。
Windows Hello PIN、AndroidのPINやパターン、Apple端末のパスコードなど、OSが許可する本人確認方法を利用します。
対応するブラウザとOSの組み合わせでは利用できます。
パソコンに表示されたQRコードをスマートフォンで読み取り、Bluetoothなどによる近接確認を行うクロスデバイス認証が利用されます。
クロスデバイス認証ではBluetoothによる近接確認が必要になる場合があります。
企業ポリシーでBluetoothが禁止されている場合は、同じ端末に保存したパスキーやセキュリティキーなど、別の認証方法を検討してください。
アプリ内ブラウザやWebViewでは、WebAuthnやパスワードマネージャーの呼び出しが制限される場合があります。
正常に動作しない場合は、Chrome、Safari、Edgeなどの外部ブラウザで開く導線を用意してください。
ブラウザやOSによって挙動が異なります。
Cookie、セッション、認証情報候補が通常モードと異なる場合があるため、通常のブラウジングモードを推奨します。
同期パスキーを利用している場合は、同じApple Account、Googleアカウント、対応パスワードマネージャーを通じて新しい端末で利用できる場合があります。
端末固定のパスキーや同期されていないパスキーは、新しい端末へ自動移行されないことがあります。
顧客サイトで本人確認を行い、紛失端末に対応するパスキーを無効化してください。
不正利用の疑いがある場合は、顧客サイトの既存ログインセッションも失効させます。
端末やパスワードマネージャーでパスキーを削除しても、サーバ側に保存されたCredential情報が直ちに削除されるとは限りません。
認証時には利用できなくなりますが、顧客サイト側でも登録済みパスキーを管理・無効化できる画面を用意することを推奨します。
複数端末を利用するユーザーには、予備のパスキーを登録できる運用が有効です。
ただし、登録数の上限、端末名、登録日時、最終利用日時、無効化方法を整理してください。
顧客サイト側でアカウント復旧手順を準備してください。
復旧経路がパスキーより弱くならないよう、登録情報、本人確認書類、管理者確認、既存連絡先などを組み合わせます。
設定しません。
APIキーは顧客バックエンドだけで保持し、Push! Passkey APIへ送信するJSON本文へバックエンド側で付与します。
顧客サイト内に実装したバックエンドendpointのURLを指定します。
data-endpoint="/pushpasskey/endpoint"
ブラウザからPush! Passkey APIへ直接接続するURLではありません。
登録・認証処理を開始できません。
ブラウザの開発者ツールで、JavaScript URL、HTTPステータス、Content Security Policy、ネットワーク制限を確認してください。
HTTPSとJSONを扱えるバックエンド言語で実装できます。
現在の正式仕様では、Push! Passkey APIへPOSTするJSON本文のapi_key項目へ設定します。
{
"api_key": "xxxxxxxxxxxxxxxx",
"user_key": "customer_user_123",
"return_page_url": "https://example.com/login"
}
このJSONは顧客バックエンドで作成してください。
現在の正式仕様ではJSON本文へ設定します。
独自にヘッダーへ変更するとPush! Passkey APIの仕様と一致しないため、APIリファレンスに記載された形式を使用してください。
API URL、HTTPメソッド、Webサーバ設定、プロキシ、HTTP 405・500などを確認してください。
バックエンドではContent-TypeとJSON解析を確認し、HTML応答を成功として扱わないでください。
無条件の再送は避けてください。
タイムアウト時でもPush! Passkey側で処理が完了している可能性があります。二重発行を防ぐため、処理種別、保存済みrequest_id、再試行回数を確認してください。
| API | 用途 |
|---|---|
/regist_url |
登録URLを発行する |
/auth_url |
認証URLを発行する |
/regist_result |
登録結果を照会する |
/auth_result |
認証結果を照会する |
{
"api_key": "xxxxxxxxxxxxxxxx",
"request_id": "u_1234567890abcdef1234567890abcdef"
}
| status | 内容 |
|---|---|
issued |
URL発行済み、処理開始前 |
in_progress |
登録・認証処理中 |
success |
正常終了 |
failed |
失敗 |
expired |
有効期限切れ |
短すぎる間隔で連続照会しないでください。
利用者体験とAPI負荷のバランスを考慮し、一定間隔で照会し、最大回数と全体の待機時間を設定してください。
画面遷移中心の構成ではリダイレクトと結果照会、同一画面で待機する構成ではポーリング、サーバ間で非同期に結果を受け取る構成ではWebhookが適しています。
いずれの方式でも、顧客バックエンドで保存済みトランザクションと結果を照合してください。
必要です。
ログイン前の匿名セッションIDをそのまま使用せず、認証成功後にセッションIDを再生成してください。
使用しません。
Push! Passkeyの認証結果を確認した後、顧客サイト自身のセッション管理方式でCookieを発行してください。
削除されません。
ログアウトは顧客サイトのログインセッションを終了する処理です。パスキーの削除・無効化は別の操作として実装してください。
利用者向けには、理解しやすい案内へ変換することを推奨します。
error_codeは内部ログや問い合わせ時の調査に使用し、画面には再試行方法や有効期限切れなどの具体的な対応を表示してください。
保存したrequest_idと照会時に送信したrequest_idが一致しているか確認してください。
別セッション、別タブ、期限切れ、DB保存失敗、文字列の切り詰めも確認します。
APIキーに紐付くドメイン、登録済みドメイン、実際のアクセスドメイン、戻り先URLを確認してください。
登録開始で発行したrequest_idを認証結果APIへ送るなど、処理種別が混在していないか確認してください。
利用者のキャンセル、端末ロック、認証器未登録、認証画面のタイムアウトなどが考えられます。
結果照会とブラウザ側エラーを確認し、利用者へ再試行を案内してください。
必要です。
パスキーは認証方式を強化しますが、顧客サイトのCSRF、XSS、セッション固定、権限管理、オープンリダイレクトなどを自動的に防止するものではありません。
出力しないでください。
APIキー、Cookie、セッションID、パスワード、秘密鍵、不要な個人情報はログへ記録しません。
推奨しません。
顧客バックエンドで固定URLを設定するか、HTTPSと許可ホストのリストで検証してください。
判断してはいけません。
URLパラメータは画面遷移の補助情報として扱い、顧客バックエンドから結果照会APIを呼び出してください。
共有を避け、管理者ごとに個別アカウントを使用してください。
退職・異動時の停止、最小権限、管理操作ログの確認を行います。
APIキー、Cookie、セッションID、パスワードを問い合わせ本文へ記載しないでください。
顧客サイト側で登録済みパスキーの管理画面を用意することを推奨します。
端末名、登録日時、最終利用日時、無効化操作などを表示すると運用しやすくなります。
組織の秘密情報管理方針に従ってローテーションを検討してください。
漏えいの疑いがある場合、担当者変更、環境廃止、設定ファイル流出時は直ちに無効化・再発行します。
Push! Passkeyの導入では、登録URL・認証URLの発行、利用者端末でのWebAuthn処理、結果照会、顧客サイトのセッション発行が別々の処理として進みます。
APIキーはバックエンドだけで管理し、user_keyは顧客サイトのセッションやDBから決定してください。
認証画面の成功表示だけでログインさせず、顧客バックエンドから結果照会APIを呼び出し、request_id、kind、user_key、status、判定フラグを確認します。
端末変更、紛失、退職、退会、不正登録を想定し、パスキー無効化、既存セッション失効、本人確認、通知、ログ保全の運用を準備してください。