メインコンテンツへスキップ
自動移行およびユーザーの一括インポートを使用して、ユーザーの登録をインポートできます。サポートされている登録タイプは次のとおりです。
  • メールアドレス: メール検証用。
  • 電話番号: SMS 検証用。
  • OTP: Google Authenticator などの認証アプリで使用するワンタイムパスワード (OTP) 用。
MFA 登録をインポートすると、移行後にユーザーが再登録する必要がなくなるため、シームレスなユーザーエクスペリエンスを実現できます。 Classic Login エクスペリエンスでは、複数の認証要素を持つユーザーの要素選択はサポートされていません。複数の登録済み認証要素を持つユーザーをインポートする予定がある場合は、Universal Loginエクスペリエンスの使用を検討してください。

スキーマ

このスキーマは、以下の両方のワークフローのMFAファクターに適用されます。
{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "totp": {
                "type": "object",
                "properties": {
                "secret": {
                    "type": "string",
                        "pattern": "^[A-Z2-7]+$",
                        "description": "The OTP secret is used for MFA authentication with Google Authenticator type apps. It must be supplied in un-padded Base32 encoding, such as: JBTWY3DPEHPK3PNP"
                    },
                },
                "additionalProperties": false,
                "required": ["secret"],
            },
            "phone": {
                "type": "object",
                "properties": {
                "value": {
                    "type": "string",
                    "pattern": "^\\+[0-9]{1,15}$",
                    "description": "The phone number for SMS or Voice MFA. The phone number should include a country code and begin with +, such as: +12125550001"
                },
                },
                "additionalProperties": false,
                "required": ["value"],
            },
            "email": {
                "type": "object",
                "properties": {
                    "value": {
                        "type": "string",
                        "format": "email",
                        "description": "The email address for MFA"
                    },
                },
                "additionalProperties": false,
                "required": ["value"],
            },
        },
        "maxProperties": 1,
        "additionalProperties": false,
    },
    "minItems": 1,
    "maxItems": 10
}

自動移行

MFA の登録情報は、自動移行の際にインポートすることもできます。これを行うには、カスタム DB のログインスクリプトの最後でコールバックに渡すユーザーの mfa_factors フィールドに、既存の登録情報を指定します。 失敗した場合は、テナントログにログイン失敗として記録され、説明 Unable to import MFA factors によって他の失敗と区別できます。例:
{
  "_id": "5e9df3b29ebabe00571c04a7",
  "date": "2020-04-20T19:10:42.916Z",
  "type": "fu",
  "description": "Unable to import MFA factors.",
  "connection": "Username-Password-Authentication",
  "connection_id": "con_mMkvaycgzgCS0p0z",
  "client_id": "aCbTAJNi5HbsjPJtRpSP6BIoLPOrSj2Cgg",
  "client_name": "All Applications",
  "ip": "10.12.13.1",
  "client_ip": null,
  "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36",
  "details": {
    "error": {
      "message": "Unable to import MFA factors."
    }
  },
  "user_name": "test@test.io",
  "strategy": "auth0",
  "strategy_type": "database"
}

ユーザーの一括インポート

  1. users.json ファイルを準備します。詳細は ユーザーの一括インポート を参照してください。
  2. 各ユーザーの既存の MFA 登録情報を含めます。
  3. ユーザーの一括インポートを開始します。
  4. 初回のリクエストで upsert オプションを有効にして、既存ユーザーのファクターを更新します。
  5. インポートジョブが完了したら、レスポンスにエラーがないか確認します。いずれかのユーザーの MFA ファクターのインポートに失敗した場合は、次のようなエラーが表示されます。
upsert オプションを使用すると、既存ユーザーに対する MFA 関連以外の更新はすべてユーザーのプロファイルに適用されます。たとえば、次のエラー概要では、ユーザーの picture 属性は http://example.org/jdoe.png に正常に設定されていますが、指定された MFA ファクターはインポートできませんでした。このような場合は、失敗したユーザーのインポートを再試行しても問題ありません。
[
  {
    "user": {
      "email": "antoinette@contoso.com",
      "picture": "http://example.org/jdoe.png",
      "mfa_factors": [
        {
          "totp": {
            "secret": "2PRXZWZAYYDAWCD"
          }
        },
        {
          "phone": {
            "value": "+15551112233"
          }
        },
        {
          "email": {
            "value": "antoinette@antoinette.biz"
          }
        }
      ]
    },
    "errors": [
      {
        "code": "MFA_FACTORS_FAILED",
        "message": "Unable to import factors"
      }
    ]
  }
]

リカバリーコード

Auth0 では、リカバリーコードをインポートする方法は提供されていません。ユーザーの MFA ファクターをインポートしても、リカバリーコードは付与されません。 ユーザーにリカバリーコードを提供するには、そのユーザーにリカバリーコードが登録されているかどうかを確認し、登録されていない場合は Recovery Code Regeneration endpoint を使用して新しいコードを生成できます。

詳細はこちら