- Signup: パスキーを主な認証方法として使用する新しいユーザーアカウントを作成します。
- Enrollment: 既存のユーザーアカウントに、認証方法としてパスキーを追加します。
- Login: 既存のユーザーに対して、そのアカウントに関連付けられたパスキーを使用して認証するよう求めます。
サインアップフロー
サインアップチャレンジをリクエスト
POST /passkey/register
新しいユーザー向けのパスキーのサインアップフローを開始します。
レスポンスとして、Auth0 は PublicKeyCredentialCreationOptions とセッション ID を返します。セッションのタイムアウトについては、レスポンス内の authn_params_public_key の timeout を確認してください。
パスキーのサインアップフローは、組織のログインフロー で説明されている動作に従って、organization パラメーターによる組織のサポートに対応しています。アプリケーションが Business Users 向けに設定されている場合は、organization パラメーターと、有効な組織名または識別子の値を指定する必要があります。ユーザーがパスキーを登録すると、Auth0 はそのユーザーを指定された組織に登録します。
リクエストパラメーター
| パラメーター | 説明 |
|---|---|
client_id | 必須。アプリケーションの client_id。 |
realm | 任意。このユーザーに関連付ける接続の名前。 接続が指定されていない場合は、テナントのデフォルトディレクトリが使用されます。 |
user_profile | 必須。ユーザーの識別情報を含むオブジェクト。デフォルトでは、有効な email と任意の表示用 name が含まれます。データベース接続で Flexible Identifiers を有効にしている場合は、 email、phone_number、username を識別子として単独または組み合わせて使用できます。これらのオプションは必須にも任意にも設定でき、Flexible Identifier の設定と一致している必要があります。渡された識別子 ( email など) がディレクトリ内にすでに存在する場合は、代わりにユーザーに Login フローを完了するよう求めてください。 |
コードサンプル
リクエスト
レスポンス
注記
- チャレンジリクエストが完了したら、アプリケーションはネイティブのAndroidまたはiOS API を使用して、ユーザー登録プロセスを続行できます。
- その後、フローを完了するには、ネイティブ API を通じて取得した情報を使用して新しいユーザーを認証する必要があります。
新規ユーザーの認証
サインアップ時に同じ接続で SMS/メールアドレス OTP の検証が必要な場合、現在、ネイティブ パスキー登録はサポートされていません。
POST /oauth/token
を使用して、指定した認証情報でユーザーを認証し、アカウントを作成して、要求されたトークンを返します。
authn_response パラメーターは、Web Authentication API の仕様 に基づいています。ネイティブ パスキーフローでは、このエンドポイントに渡す情報は、モバイルアプリケーションのネイティブ API を通じて取得できます。
リクエストパラメーター
| パラメーター | 説明 |
|---|---|
grant_type | 必須。次の値を指定します: urn:okta:params:oauth:grant-type:webauthn |
client_id | 必須。アプリケーションの client_id |
realm | 任意。ユーザーに関連付ける接続の名前です。接続を指定しない場合は、テナントのデフォルトディレクトリが使用されます。 |
scope | 任意。IDトークンを取得するには openid を使用します。IDトークンにユーザープロファイル情報を含めるには、openid profile email を使用します。 |
audience | 任意。アクセストークンを取得する対象の API の識別子です。 |
auth_session | 必須。最初のパスキー チャレンジ リクエストで返されるセッション ID。 |
authn_response | 必須。次の項目を含むオブジェクト:
|
authn_response.id | 必須。Base64URL 形式のクレデンシャル ID。 |
authn_response.rawId | 必須。Base64URL 形式のクレデンシャル ID。 |
authn_response.type | 必須。次の値を指定します: public-key |
authn_response.authenticatorAttachment | 必須。次のいずれかの値を指定します:
|
authn_response.response | 必須。次の項目を含むオブジェクト:
|
コード例
リクエスト
レスポンス
登録フロー
/me エンドポイントの create:me:authentication_methods スコープを持つ があることを確認してください。
パスキーの登録を開始する
POST /me/v1/authentication-methods
最初のステップでは、登録プロセスを開始します。これを行うには、/me/v1/authentication-methods エンドポイントに POST リクエストを送信します。
リクエストパラメーター
| パラメーター | 説明 |
|---|---|
type | 必須。値 public-key を指定します。 |
connection | 任意。パスキーを作成する接続の名前です。 |
identity | 任意。ユーザーのアイデンティティです。リンク済みアカウントで使用します。 |
コード例
リクエスト
レスポンス
注記
- レスポンス本文内の
auth_sessionプロパティは、現在の認証セッションの識別子です。これを/verifyエンドポイントに渡す必要があります。 - チャレンジリクエストの完了後、アプリケーションはネイティブの Android または iOS API を使用して、ユーザーの登録プロセスを続行できます。これにより、ユーザーは認証器 (指紋スキャナー、セキュリティキー、スマートフォンなど) を使ってパスキーを作成するよう求められます。
パスキー登録の確認
POST /me/v1/authentication-methods/passkey|new/verify
新規登録の場合、パス内の ID は常に
passkey|new です。AuthenticatorAttestationResponse を受け取ります。登録を完了して確認するには、このレスポンスを Auth0 サービスに送り返す必要があります。
リクエストパラメーター
| パラメーター | 説明 |
|---|---|
auth_session | 必須。/me/v1/authentication-methods への最初の POST リクエストのレスポンスで受け取るセッション識別子。 |
authn_response | 必須。authn_response パラメーターは Web Authentication API の仕様に基づいています。ネイティブのパスキーフローでは、このエンドポイントに渡す情報はモバイルアプリケーションのネイティブ API から取得できます。 |
authn_response.id | 必須。Base64URL 形式のクレデンシャル ID。 |
authn_response.rawId | 必須。Base64URL 形式のクレデンシャル ID。 |
authn_response.type | 必須。値 public-key を指定します。 |
authn_response.authenticatorAttachment | 必須。値 platform または cross-platform を指定します。 |
authn_response.response | 必須。次の項目を含むオブジェクトです:
|
コードサンプル
リクエスト
備考
この手順が正常に完了すると、ユーザーのパスキーが登録され、以後の認証で使用できるようになります。ログインフロー
ログインチャレンジをリクエスト
POST /passkey/challenge
初回のサインアップ時にアカウントにパスキーを保存した既存のユーザーに対して、パスキーのログインフローを開始します。
レスポンスとして、Auth0 は PublicKeyCredentialRequestOptions、セッション ID、および Relying Party 識別子 rpId を返します。セッションのタイムアウトは、レスポンス内の authn_params_public_key の timeout を確認してください。レスポンスで返される rpId は、ネイティブデバイス (iOS/Android) がドメインに紐付けられた保存済み認証情報を検索する際に使用する識別子です。Web アプリケーション (例: example.com) で作成されたパスキーをネイティブフローで利用できるようにするには、返される rpId が Web 側の rpId と一致している必要があります。テナントの RP ID をカスタマイズする方法については、Configure Passkey Policy を参照してください。
パスキーのログインフローは、組織のログインフロー で説明されている動作に従い、organization パラメーターを通じて組織をサポートします。アプリケーションが Business Users 向けに設定されている場合は、organization パラメーターと、有効な組織名または識別子の値を指定する必要があります。
発行されるすべてのトークンは、指定された組織のコンテキストで発行されます。組織で Auto-Membership を有効にしている場合、ユーザーは認証に成功した後、その組織に自動的に登録されます.
リクエストパラメーター
| パラメーター | 説明 |
|---|---|
client_id | 必須。アプリケーションの client_id です。 |
realm | 任意。ユーザーに関連付ける接続の名前です。 接続が指定されていない場合は、テナントのデフォルトディレクトリが使用されます。 |
コード例
リクエスト
レスポンス
補足
- チャレンジリクエストが完了したら、アプリケーションはネイティブの Android または iOS API を使用してログインプロセスを続行できます。
- その後、フローを完了するには、ネイティブ API から取得した情報を使用して 既存のユーザーを認証 する必要があります。
既存ユーザーを認証する
POST /oauth/token
トークンエンドポイントを使用して、指定された認証情報でユーザーを認証し、要求されたトークンを返します。
authn_response パラメーターは、Web Authentication API 仕様 に基づいています。ネイティブのパスキーフローでは、このエンドポイントに渡す情報を、モバイルアプリケーションのネイティブ API から取得できます。
リクエストパラメーター
| Parameter | Description |
|---|---|
grant_type | 必須。次の値を指定します: urn:okta:params:oauth:grant-type:webauthn |
client_id | 必須。アプリケーションの client_id |
realm | 任意。ユーザーに関連付ける接続の名前。接続を指定しない場合は、テナントのデフォルトディレクトリが使用されます。 |
scope | 任意。IDトークンを取得するには openid を使用します。IDトークンにユーザープロファイル情報を含めるには openid profile email を使用します。 |
audience | 任意。アクセストークンを取得する対象 API の API 識別子。 |
auth_session | 必須。最初のパスキーチャレンジリクエストで返されるセッション ID。 |
authn_response | 必須。次の項目を含むオブジェクト:
|
authn_response.id | 必須。Base64URL のクレデンシャル ID。 |
authn_response.rawId | 必須。Base64URL のクレデンシャル ID。 |
authn_response.type | 必須。次の値を指定します: public-key |
authn_response.authenticatorAttachment | 任意。次の値を指定します:
|
authn_response.response | 必須。次の項目を含むオブジェクト:
|
authn_response.clientExtensionResults | 任意。Relying Party が要求したクライアント拡張機能の処理結果を含みます。 |