Okta

オクタ

はじめに

アプリケーションの認証基盤をAuth0へ移行する際に課題となるのが、既存ユーザデータベースからAuth0へのユーザ情報の移行です。

Auth0は下記2つのユーザインポート機能を提供しており、今回は「一括インポート」について手順をご紹介します。

  • 一括インポート:ユーザ情報を定義したJSONファイルを用いて移行
  • 自動マイグレーション:ユーザがAuth0を介してログインしたタイミングで、既存ユーザデータベースからユーザ情報を自動的に移行

一括インポートでは、既存ユーザデータベース等から抽出したユーザ情報をJSONファイルとして定義し、Auth0内のユーザデータベースへインポートします。既存ユーザデータベースで、Auth0側に対応するハッシュアルゴリズムによるパスワードが格納されている場合でも、ユーザ側へパスワードリセットを要求することなくユーザ移行できます。

前提

本ページ内の動作例では、Auth0連携済のWebアプリケーションを対象とします。
また、本ページに記載する機能及び設定に関する内容は、2022年11月現在の情報となります。

設定概要

一括インポートによるユーザ移行手順は、以下の通りです。

1. インポート用JSONファイル作成
  Auth0指定のフォーマットに合わせて登録するユーザ情報を記述
2. 作成したJSONファイルのインポート処理
  • Auth0 User Import / Export Extensionによるインポート
  • Auth0 Management APIによるインポート

制限事項

Auth0の一括インポートで処理可能なJSONファイルのサイズは、500KB以下です。500KBを超える場合は、JSONファイルの分割が必要です。
https://auth0.com/docs/manage-users/user-migration/bulk-user-imports#create-users-json-file

設定例

1. ユーザインポート用JSONファイル作成

Auth0指定のフォーマットに合わせて、登録するユーザ情報を記述します。
メールアドレスやパスワード等のフィールド名、Auth0側で対応するハッシュアルゴリズム等については、以下URLをご確認ください。
Custom password hash / Bulk User Import Database Schema and Examples - Auth0 docs

JSONファイル作成例 (パスワード:sha256によるハッシュ化、ソルト有り)

[
 {
   "email": "test.user2@example.com",
   "email_verified": true,
   "blocked": false,
   "custom_password_hash": {
    "algorithm": "sha256",
      "hash": {
        "value": "fe956a8026cf49df7b507dde94e45408dca812f4fa63bbfd1a099b403110e832",
        "encoding": "hex"
      },
      "salt": {
        "value": "abc123",
        "position": "prefix"
      }
  }
 }
]
2. 作成したJSONファイルのインポート処理
  • Auth0 User Import / Export Extensionによるインポート
Ⅰ. Auth0管理画面の[ Extensions ] > [ All Extensions ]から、[ User Import / Export ]をインストール
Auth0管理画面の[ Extensions ] > [ All Extensions ]から、[ User Import / Export ]をインストール
Ⅱ. インストールした[ User Import / Export ]Extensionをクリックし、[ Please select a database connection ]でユーザの情報を格納するdatabase connectionを選択
インストールした[ User Import / Export ]Extensionをクリックし、[ Please select a database connection ]でユーザの情報を格納するdatabase connectionを選択
Ⅲ. インポート対象のJSONファイルを選択の上、[ START IMPORTING USERS ]をクリックしてインポートを開始
インポート対象のJSONファイルを選択の上、[ START IMPORTING USERS ]をクリックしてインポートを開始
Ⅳ. [ Import Status ]が[ Completed ]と表示され、インポートが完了したことを確認
[ Import Status ]が[ Completed ]と表示され、インポートが完了したことを確認
Ⅴ. [ Report ]をクリックし、インポートジョブの成功及びエラー発生有無を確認
[ Report ]をクリックし、インポートジョブの成功及びエラー発生有無を確認
Ⅵ. インポートジョブ完了後、Auth0より完了メールが送付されたことを確認
インポートジョブ完了後、Auth0より完了メールが送付されたことを確認
Ⅶ. Auth0管理画面の [ User Management ] > [ Users ]から、指定したdatabase connectionにインポートしたユーザが追加されたことを確認
Auth0管理画面の [ User Management ] > [ Users ]から、指定したdatabase connectionにインポートしたユーザが追加されたことを確認
  • Auth0 Management APIによるインポート

API実行には様々な方法がありますが、本ページ記載の手順ではAuth0 Management API Explorer上から操作を行います。事前準備として、下記2つが必要です。

Ⅰ. Auth0 Management API Explorer上で、[ Jobs ] > [ create import users job ]をクリック
Auth0 Management API Explorer上で、[ Jobs ] > [ create import users job ]をクリック
Ⅱ. 各パラメータ値を入力し、[ Try ]をクリック
  • users:インポートするJSONファイルを指定
  • connection_id:インポート先のdatabase connection IDを指定
  • upsert:インポート先のdatabase connection内に存在するユーザに対して情報更新を行う場合は”true”を指定
  • send_completion_email:インポートジョブ完了後における完了メール送付有無を指定
各パラメータ値を入力し、[ Try ]をクリック
Ⅲ. [ RESPONSE CODE ]が202と表示され、インポートが成功したことを確認
[ RESPONSE CODE ]が202と表示され、インポートが成功したことを確認
Ⅳ. インポートジョブ完了後、Auth0より完了メールが送付されたことを確認
インポートジョブ完了後、Auth0より完了メールが送付されたことを確認
Ⅴ. Auth0管理画面の [User Management ] > [ Users ]より、指定したdatabase connectionにインポートしたユーザが追加されたことを確認
Auth0管理画面の [User Management ] > [ Users ]より、指定したdatabase connectionにインポートしたユーザが追加されたことを確認

補足事項

ユーザインポートのジョブ発行及びインポートジョブの完了は、Auth0ログからも確認可能です。

  • インポートジョブ発行ログ
インポートジョブ発行ログ
  • インポートジョブ完了ログ
インポートジョブ完了ログ

ログイン確認例:移行前のユーザ情報でのログイン

1. Auth0連携済のWebアプリケーション画面でログイン操作を行い、Auth0が提供するログイン画面に遷移
2. 移行前のユーザ情報でログインを実施
移行前のユーザ情報でログインを実施
移行前のユーザ情報でログインを実施
3. 移行前のユーザ情報でWebアプリケーションへログインできたことを確認

おわりに

一括インポートによるユーザ移行では、ユーザ情報を定義したJSONファイルを用いて簡単にユーザデータをインポートでき、対応のハッシュアルゴリズムであればユーザ移行に伴うパスワードリセットを必要としません。本機能は、無償のAuth0トライアル環境でも利用できますので、是非お試しください。
Auth0では、今回ご紹介した一括インポート以外にも、自動マイグレーションという移行方法を備えています。Auth0で実現するユーザ移行にご興味ある方は、是非弊社までお問合せください。

参考

お問い合わせ・資料請求

株式会社マクニカ  Okta 担当

月~金 8:45~17:30