ユーザー登録と初回認証
このドキュメントの目的
ユーザー登録(セルフサインアップ)を実装し、初回認証でトークンを取得することが目標です。
具体的には、initial-registration APIを使用して、ユーザーが自分でアカウントを作成し、即座にログインできるフローを構築します。
学べること
✅ ユーザー登録の基礎
- セルフサインアップ(initial-registration)の仕組み
- 登録時のパスワードポリシー検証
- 登録完了後の自動認証フロー
✅ 実践的な知識
- Authorization Request → initial-registration → Token取得の一連の流れ
- カスタム登録スキーマの設定方法
- トラブルシューティング
所要時間
⏱️ 約10分
このドキュメントの位置づけ
Phase 1: 最小構成で動作確認(Step 4/5)
前提ドキュメント:
次のドキュメント:
- 認証ポリシー基礎編 - より柔軟な認証設定
前提条件
- how-to-03でクライアント登録完了
- 組織ID・テナントID・クライアントIDを確認済み
- OAuth 2.0 / OIDC の 基本的なフロー理解
ユーザー登録の2つの方法
idp-serverでは、サービスの性質に応じて2つの登録方法を提供しています:
方法1: initial-registration(セルフサインアップ)
ユーザー自身が認証画面で登録
Auth0/Keycloakと同じように、ログイン画面に「新規登録」を用意し、ユーザーが自分で情報を入力して登録します。
向いているサービス:
- ✅ 一般向けWebサービス(ECサイト、SNS、ブログ等)
- ✅ モバイルアプリ
- ✅ 不特定多数のユーザーが利用するSaaS
このドキュメントで扱う方法です。
方法2: Management API
管理者が事前にユーザー作成
管理画面やスクリプトから、管理者がユーザーを事前に作成します。
向いているサービス:
- ✅ 社内システム(従業員管理)
- ✅ 招 待制サービス
- ✅ B2B SaaS(取引先企業のユーザー一括登録)
別ドキュメントで扱います: Management APIによるユーザー管理(今後追加予定)
このドキュメントで行うこと
🧭 全体の流れ
- Authorization Request(認可リクエスト)
- initial-registration API でユーザー登録
- Authorization Code 取得
- Token Request でアクセストークン・IDトークン取得
initial-registration の仕組み
認証フロー内でのユーザー登録
initial-registrationは、OAuth認可フロー中にユーザー登録を行います:
[ユーザー] → Authorization Request
↓
[idp-server] → ログイン画面にリダイレクト
↓
[ユーザー] → 新規登録フォーム入力
↓
[idp-server] ← initial-registration API
↓ ユーザー作成 + パスワードポリシー検証
↓ 認証成功(OperationType.AUTHENTICATION)
↓
[idp-server] → Authorization Code発行
↓
[ユーザー] → Token Request
↓
[idp-server] → Access Token + ID Token発行
デフォルト登録スキーマ
テナントにinitial-registration設定がない場合、以下のフィールドで動作します:
必須項目:
email: メールアドレス(ログインID)password: パスワード(テナントのパスワードポリシーで検証)
任意項目:
name: 氏名given_name: 名family_name: 姓phone_number: 電話番号
カスタマイズ可能: Authentication Configuration APIで登録フィールドを追加・変更できます(後述)
環境変数の準備
前提: how-to-03で設定した環境変数を使用します。
# 接続先サーバーURL
IDP_SERVER_URL=http://localhost:8080
# 環境変数の確認
echo "Organization ID: $ORGANIZATION_ID"
echo "Public Tenant ID: $PUBLIC_TENANT_ID"
echo "Web Client ID: $WEB_CLIENT_ID"
echo "Web Client Secret: ${WEB_CLIENT_SECRET:0:20}..."
まだ設定していない場合は、how-to-03を参照してください。
Step 1: Authorization Request
認可リクエスト実行
curl -v "${IDP_SERVER_URL}/${PUBLIC_TENANT_ID}/v1/authorizations?\
response_type=code&\
client_id=${WEB_CLIENT_ID}&\
redirect_uri=http://localhost:3000/callback&\
scope=openid+profile+email&\
state=random-state-123&\
nonce=random-nonce-456"