Skip to main content
ネイティブパスキーは、現在、限定早期アクセスでご利用いただけます。Auth0のリリースについては、「製品のリリース段階」を参照してください。
ネイティブパスキーは、従来の認証形式(ユーザー名/パスワードなど)に代わるフィッシング耐性のある代替手段であり、より簡単かつ安全なユーザーエクスペリエンスを提供します。実装の詳細については、「モバイルアプリケーション向けのネイティブパスキー」を確認してください。 ネイティブパスキーは、Auth0とネイティブiOSまたはAndroid APIの組み合わせを使用して、チャレンジフローをモバイルアプリケーションに直接埋め込みます。以下に表示されたエンドポイントはAuth0 Authentication APIのサブセットとして、限定早期アクセスで現在利用することができます。このAPIの使用については、「Authentication APIについて」を確認してください。

サインアップフロー

サインアップチャレンジを要求する

POST /passkey/register 新規ユーザーのパスキーサインアップフローを開始します。応答時に、Auth0はPublicKeyCredentialCreationOptionsとセッションIDを返します。

要求パラメーター

パラメーター説明
client_id必須。アプリケーションのclient_idです。
realm任意。このユーザーに関連付ける接続の名前です。

接続が指定されていない場合は、テナントのデフォルトのディレクトリが使用されます。
user_profile必須。ユーザーのID情報を含むオブジェクトです。デフォルトでは、有効なemailと任意の表示nameが含まれます。

データベース接続に柔軟な識別子を有効にした場合は、識別子としてemailphone_numberusernameを組み合わせて使うことができます。これらのオプションは必須または任意にできますが、柔軟な識別子の構成に一致する必要があります。

渡された識別子(`emailなど)がディレクトリに既に存在する場合には、代わりに、ユーザーにログインフローの完了を求めるメッセージが表示されます。

コード例

要求
POST /passkey/register
Content-Type: application/json

{
  "client_id": "<CLIENT_ID>",
  "realm": "<OPTIONAL_CONNECTION>",
  "user_profile": {
	  "email": "<VALID_EMAIL_ADDRESS>",
	  "name": "<OPTIONAL_USER_DISPLAY_NAME>",
  }
}
応答
HTTP/1.1 200 OK
Content-Type: application/json

{
  "authn_params_public_key": {
    "challenge": "<GENERATED_CHALLENGE_FOR_THIS_SESSION>",
    "timeout": <MILLISECONDS>,
    "rp": {
      "id": "<THE_CUSTOM_DOMAIN>",
      "name": "<THE_CUSTOM_DOMAIN>"
    },
    "pubKeyCredParams": [
      { type: 'public-key', alg: -8 },
      { type: 'public-key', alg: -7 },
      { type: 'public-key', alg: -257 }
    ],
    "authenticatorSelection": {
      "residentKey": "required",
      "userVerification": "preferred"
    },
    "user": {
      "id": "<GENERATED_ID>",
      "name": "<USER-ENTERED_IDENTIFIER>",
      "displayName": "<USER-ENTERED_DISPLAY_NAME_OR_IDENTIFIER_IF_MISSING>"
    }
  },
  "auth_session": "<SESSION_ID>"
}

備考

  • チャレンジ要求を完了したら、アプリケーションはネイティブのAndroidまたはiOS APIを使用して、ユーザー登録プロセスを続行することができます。
  • その後、ネイティブAPIから取得した情報を使用して新規ユーザーを認証し、フローを完了する必要があります。

新規ユーザーを認証する

POST //token トークンエンドポイントを使用して、指定された資格情報でユーザーを認証し、アカウントを作成して要求されたトークンを返します。 authn_responseパラメーターは、Web Authentication APIの仕様に基づいています。ネイティブパスキーフローでは、このエンドポイントに渡された情報は、モバイルアプリケーションのネイティブAPIを介して取得することができます。
パラメーター説明
grant_type必須。次の値を含みます:urn:okta:params:oauth:grant-type:webauthn
scope任意openidを使用してIDトークンを取得するか、openid profile emailを使用してIDトークンにユーザープロファイル情報を含めます。
audience任意。アクセストークンを取得したいAPIのAPI識別子です。
auth_session必須。最初のパスキーチャレンジ要求中に返されるセッションIDです。
authn_response必須。以下の項目を含むオブジェクトです。
  • id
  • rawId
  • type
  • authenticatorAttachment
  • response
authn_response.id必須。Base64URLの資格情報IDです。
authn_response.rawId必須。Base64URLの資格情報IDです。
authn_response.type必須。次の値を含みます:public-key
authn_response.authenticatorAttachment必須。次の値を含みます:
  • platform
  • cross-platform
authn_response.response必須。以下の項目を含むオブジェクトです。
  • clientDataJSONAuthenticatorResponseから継承されたクライアントデータのJSON互換のシリアル化を含みます。
  • attestationObjectAuthenticatorResponseから継承されたAuthenticatorデータとアテステーションステートメントを含みます。

要求パラメーター

POST /oauth/token
Content-Type: application/json

{
  "grant_type": "urn:okta:params:oauth:grant-type:webauthn",
  "client_id": "<CLIENT_ID>",
  "realm": "<OPTIONAL_CONNECTION>",
  "scope": "<OPTIONAL_REQUESTED_SCOPE>",
  "audience": "<OPTIONAL_REQUESTED_AUDIENCE>"
  "auth_session": "<SESSION_ID_FROM_THE_FIRST_REQUEST>",
  "authn_response": {
    "id": "<BASE64URL_ID>",
    "rawId": "<BASE64URL_RAWID>",
    "type": "public-key",
    "authenticatorAttachment": "platform|cross-platform",
    "response": {
      "clientDataJSON": "<BASE64URL_CLIENT_DATA_JSON>",
      "attestationObject": "<BASE64URL_ATTESTATION_OBJECT>",
      <OTHER_PROPERTIES>
    }  
}

コード例

要求
HTTP/1.1 200 OK
Content-Type: application/json

{
  "access_token": "<BASE64_TOKEN>",
  "refresh_token": "<BASE64_TOKEN>",
  "id_token": "<BASE64_TOKEN>",
  "token_type": "Bearer",
  "expires_in": <SECONDS>
}
応答
POST /passkey/challenge

ログインフロー

ログインチャレンジを要求する

初回のサインアップ時にパスキーをアカウントに保存した既存のユーザーについて、パスキーログインフローを開始します。 応答時に、Auth0はPublicKeyCredentialRequestOptionsとセッションIDを返します。
パラメーター説明
client_id必須。アプリケーションのclient_idです。
realm任意。ユーザーに関連付ける接続の名前です。

接続が指定されていない場合は、テナントのデフォルトのディレクトリが使用されます。

要求パラメーター

POST /passkey/challenge
Content-Type: application/json

{
  "client_id": "<CLIENT_ID>",
  "realm": "<OPTIONAL_CONNECTION>"
}

コード例

要求
HTTP/1.1 200 OK
Content-Type: application/json

{
  "authn_params_public_key": {
    "challenge": "<GENERATED_CHALLENGE_FOR_THIS_SESSION>",
    "timeout": <AUTH_TIMEOUT_IN_MILLISECONDS>,
    "rpId": "<CUSTOM_DOMAIN>",
    "userVerification": "preferred"
  },
  "auth_session": "<SESSION_ID>"
}
応答
POST /oauth/token

備考

  • チャレンジ要求を完了したら、アプリケーションはネイティブのAndroidまたはiOS APIを使用して、ログインプロセスを続行することができます。
  • その後、ネイティブAPIから取得した情報を使用して既存のユーザーを認証し、フローを完了する必要があります。

既存のユーザーを認証する

トークンエンドポイントを使用して、指定された資格情報でユーザーを認証し、アカウントを作成して要求されたトークンを返します。 authn_responseパラメーターは、Web Authentication APIの仕様に基づいています。ネイティブパスキーフローでは、このエンドポイントに渡された情報は、モバイルアプリケーションのネイティブAPIを介して取得することができます。
パラメーター説明
grant_type必須。次の値を含みます:urn:okta:params:oauth:grant-type:webauthn
scope任意openidを使用してIDトークンを取得するか、openid profile emailを使用してIDトークンにユーザープロファイル情報を含めます。
audience任意。アクセストークンを取得したいAPIのAPI識別子です。
auth_session必須。最初のパスキーチャレンジ要求中に返されるセッションIDです。
authn_response必須。以下の項目を含むオブジェクトです。
  • id
  • rawId
  • type
  • authenticatorAttachment
  • response
authn_response.id必須。Base64URLの資格情報IDです。
authn_response.rawId必須。Base64URLの資格情報IDです。
authn_response.type必須。次の値を含みます:public-key
authn_response.authenticatorAttachment必須。次の値を含みます:
  • platform
  • cross-platform
authn_response.response必須。以下の項目を含むオブジェクトです。
  • clientDataJSONAuthenticatorResponseから継承されたクライアントデータのJSON互換のシリアル化を含みます。
  • attestationObjectAuthenticatorResponseから継承されたAuthenticatorデータとアテステーションステートメントを含みます。

要求パラメーター

POST /oauth/token
Content-Type: application/json

{
  "grant_type": "urn:okta:params:oauth:grant-type:webauthn",
  "client_id": "<CLIENT_ID>",
  "realm": "<OPTIONAL_CONNECTION>",
  "scope": "<OPTIONAL_REQUESTED_SCOPE>",
  "audience": "<OPTIONAL_REQUESTED_AUDIENCE>"
  "auth_session": "<SESSION_ID_FROM_THE_FIRST_REQUEST>",
  "authn_response": {
    "id": "<BASE64URL_ID>",
    "rawId": "<BASE64URL_RAWID>",
    "type": "public-key",
    "authenticatorAttachment": "platform|cross-platform",
    "response": {
      "authenticatorData": "<BASE64URL_AUTHENTICATORDATA>",
      "clientDataJSON": "<BASE64URL_CLIENTDATAJSON>",
      "signature": "<BASE64URL_SIGNATURE>",
      "userHandle": "<BASE64URL_USERHANDLE>"
    },
    "clientExtensionResults": <OPTIONAL_OBJECT>
}

コード例

要求
HTTP/1.1 200 OK
Content-Type: application/json

{
  "access_token": "<BASE64_TOKEN>",
  "refresh_token": "<BASE64_TOKEN>",
  "id_token": "<BASE64_TOKEN>",
  "token_type": "Bearer",
  "expires_in": <SECONDS>
}
応答
HTTP/1.1 200 OK
Content-Type: application/json

{
  "access_token": "<BASE64_TOKEN>",
  "refresh_token": "<BASE64_TOKEN>",
  "id_token": "<BASE64_TOKEN>",
  "token_type": "Bearer",
  "expires_in": <SECONDS>
}