メインコンテンツへスキップ

前提条件

データベース接続でパスキーを有効にするには、事前に次の前提条件を満たしておく必要があります。 テナントでは、次の設定が必要です。 データベース接続では、次の設定が必要です。 パスキーを有効にしたデータベース接続では、引き続きパスワードも有効にしておく必要があります。これにより、パスキーにまだ対応していないブラウザーや古いデバイスからでも、ユーザーは引き続きアカウントにアクセスできます。

早期アクセス ユーザーインポートを有効にせずに独自のデータベースを使用する

パスキー認証で、ユーザーインポートを有効にしなくても独自のデータベースを使用できるようになりました。これにより、外部のユーザーストアに対する認証を継続しながら、カスタムデータベース接続でパスキー認証を提供できます。 前提条件として、識別子と user_id の両方でのユーザー処理をサポートするように、Get User と Create のデータベース Action スクリプトを更新する必要があります。
  1. まず、データベース接続でユーザーインポートが無効になっていることを確認します。
  2. context オブジェクトのサポートを有効にします。これにより、データベース Action スクリプトで context パラメーターを利用できるようになり、識別子と user_id の両方での検索をサポートするために必要になります。
  3. Get User スクリプトは、識別子による検索 (context.identifierType が設定されていない場合) と user_id による検索 (context.identifierTypeuser_id に設定されている場合) の両方をサポートする必要があります。 提供されている getUser 関数を使用するように、Get User データベース Action スクリプトgetByEmail から更新します。
    function getByEmail(email, callback) { 
    function getUser(identifierValue, context, callback) { 
        const axios = require('axios');
    
        // context からユーザー識別子を取得します
        const identifierType = context.identifierType || 'email'; 
    
        // 外部のユーザー取得エンドポイントに置き換えます 
        const url = configuration.baseAPIUrl
                    + `/get_user/${email}?type=email`; 
                    + `/get_user/${identifierValue}?type=${identifierType}`; 
    
        axios.get(url)
            .then(response => {
                // Return the user object if found
                const user = response.data; 
                return callback(null, {
                    user_id: user.user_id,
                    email: user.email
                    // 必要に応じて他のユーザー属性を含めます 
                });
            })
            .catch(error => {
                // エラーレスポンスを処理します 
                return callback(null);
            });
    }
    
  4. Create スクリプトは、有効なユーザープロファイルを返す必要があります。属性が有効な場合、返されるユーザープロファイルは Login スクリプトおよび Get User スクリプトと同じ検証に従う必要があります。属性が有効でない場合、返されるユーザープロファイルには user_id の値を含める必要があります。 有効なユーザープロファイルを返すように、Create データベース Action スクリプトを更新します。
    function create(user, callback) {
        const axios = require('axios');
    
        // 外部のユーザー作成エンドポイントに置き換えます
        const url = 'https://example.com/api/create'; 
    
        const payload = {
            email: user.email
            // 必要に応じて他のユーザープロパティを追加します
        };
    
        axios.post(url, payload)
            .then(response => {
                // 作成された場合はユーザーオブジェクトを返します
                const createdUser = response.data; 
    
                return callback(null, {
                    user_id: createdUser.user_id,
                    email:createdUser.email
                    // 必要に応じて他のユーザー属性を含めます
                });
            })
            .catch(error => {
                // エラーレスポンスを処理します 
                return callback(error);
            }); 
    }
    

パスキーを設定する

前提条件を満たしたら、Auth0 Dashboard を使用してパスキーを有効化し、設定できます。
1

パスキー設定を開く

Authentication > Database に移動し、編集するデータベース接続の名前を選択します。Authentication Methods タブを選択します。次に、Passkey セクションで Configure を選択し、Passkey パネルを開きます。まだチェックされていない場合は、Enable passkeys をオンにします。
2

パスキー認証 UI を選択する

パスキー認証 UI では、ログイン時およびサインアップ時に、ユーザーがどのようにパスキー認証を開始できるかを決定します。Passkey Authentication UI セクションで、3 つのオプションのいずれかを選択します。
Passkey authentication UIDescription
Passkey button & autofillユーザーは、自動入力またはパスキーボタンを使ってパスキーで認証できます。
Autofillユーザーがパスキーを使用するには、ブラウザーの自動入力機能を使ってログインする必要があります。自動入力では、認証情報を手動で入力する代わりに、ドロップダウンメニューから保存済みのアカウントを選択できます。
Passkey buttonユーザーは、ログインプロンプトで Continue with a passkey ボタンを選択する必要があります。
ユーザーのブラウザーで自動入力を利用できない場合、パスキーボタン (有効な場合) またはパスワード認証情報を使ってログインできます。
3

段階的登録を有効にする(任意)

段階的登録では、識別子とパスワードでログインした後、まだパスキーを作成していないユーザーに対してパスキーの作成を促します。この手順は必須ではなく、ユーザーは 30 日ごとに延期できます。段階的登録は、ユーザーをパスキーへ移行する際に、認証方法の移行をスムーズにするのに役立ちます。
Organization 招待メール からアカウントを作成する場合、ユーザーはパスキー認証を選択できません。段階的登録を有効にすると、これらのユーザーはパスワードでログインした後にパスキーを作成できます。
Progressive Enrollment チェックボックスはデフォルトでオンになっていますが、チェックを外して無効にできます。
4

ローカル登録を有効にする(任意)

パスキーユーザーがクロスデバイス パスキーを使用して新しいデバイスにログインすると、ローカル登録によって、その新しいデバイス上でローカル パスキーを作成するよう促されます。これは必須ではないため、ユーザーはローカル パスキーの作成をスキップできます。Local Enrollment チェックボックスはデフォルトでオンになっていますが、チェックを外して無効にできます。
5

設定を保存する

設定の変更を保存するには、Save を選択します。保存ボタンが無効になっている場合は、Passkey パネル上部の Passkey Authentication Prerequisites セクションで、テナントとデータベース接続が正しく設定されていることを確認してください。

次のステップ

パスキー利用時のエンドユーザー体験を最適化するために、以下の追加手順を検討してください。

Relying Party ID (RP ID) を設定する

ユーザーが 1 つのパスキーで複数のサブドメイン間で認証できるようにするには (たとえば、app.example.com で提供されるネイティブアプリケーションと login.example.com で提供される Web アプリケーションの両方) 、RP ID を親ドメインまたはルートドメインに設定できます。
Auth0 Dashboard または Management API で RP ID をカスタマイズすると、他のドメイン用のすべてのパスキーが使用できなくなり、エンドユーザーは再登録する必要があります。
RP ID を正しく機能させるには、アプリケーションのドメインを アプリケーション設定Allowed Origins (CORS) リストに追加する必要があります。 Auth0 Dashboard で RP ID を設定するには、次の手順を実行します。
  1. Auth0 Dashboard > Tenant Settings に移動します。
  2. Relying Party IDs タブを選択します。
  3. Edit Relying Party ID を選択します。
  4. ドメインを入力します。
  5. この RP ID がルートドメインである場合は、チェックボックスを選択して、そのドメインをテナントのデフォルトとして設定します。
  6. Save を選択します。
  7. 次に、Relying Party ID を設定するアプリケーションに移動します。
  8. アプリケーション設定を選択します。
  9. Application URIs セクションの Allowed Origins (CORS) に、アプリケーションのドメインを追加します。
  10. Save を選択します。

カスタムドメインを設定する

ユーザーがパスキーを登録すると、そのパスキーはのドメインに関連付けられます。ドメイン名が変更されると、以前のドメインに関連付けられているパスキーはすべて無効になります。 エンドユーザーへの影響を避けるため、パスキーを有効にする前に、テナント用のカスタムドメインを設定することを検討してください。 テナントでMultiple Custom Domainsが有効になっている場合、Auth0 はドメインとそのドメイン用のパスキーを1対1で対応付けます。 ユーザーは、テナント上の複数のカスタムドメインのうち、1つのドメイン (最初に登録したドメイン) に対してのみパスキーを登録できます。パスワードレスログインでは、選択したカスタムドメインがパスワードレスログインフローの Magic Link に反映されている必要があります。

多要素認証をスキップする

multi-factor authentication を有効にしている場合、既定では、認証方式がパスワードかパスキーかにかかわらず、MFA チャレンジを完了する必要があります。 パスキーは非常に高いレベルのセキュリティを提供するため、post-login Action を使用してパスキー認証時の MFA をスキップできます。