🔍 認証スキーマブロック
認証スキーマブロックは、Nodeblocksアプリケーションにおける認証データ検証のためのJSONスキーマ定義を提供します。これらのスキーマは安全な認証フローを確保し、認証関連のAPIエンドポイントの明確な契約を提供します。
🎯 概要
認証スキーマブロックは以下を目的として設計されています:
- 処理前の認証データの検証
- 複数の認証方法のサポート(OAuth、メール/パスワード)
- 適切な検証による安全な認証の確保
- メール確認ワークフローの実現
- セキュリティ強化のためのデバイスフィンガープリンティングのサポート
📋 認証スキーマ種類
プロバイダー認証スキーマ
OAuthとサードパーティ認証の検証。
認証情報認証スキーマ
メール/パスワード認証の検証。
アイデンティティスキーマ
複数の方法をサポートする柔軟な認証。
メール確認スキーマ
メール確認と確認ワークフロー。
🔧 利用可能な認証スキーマ
providerSchema
OAuthとサードパーティ認証のためのプロバイダー認証スキーマ。
目的: OAuthプロバイダー認証データの検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
provider
,providerId
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
provider: string
- OAuthプロバイダー名providerId: string
- プロバイダー固有のユーザーID
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { providerSchema } = schemas;
const providerSchema = providerSchema({});
const validate = ajv.compile(providerSchema.schemas as SchemaDefinition);
const isValid = validate({ provider: 'google', providerId: '12345' });
credentialsSchema
メール/パスワード認証のための認証情報認証スキーマ。
目的: メール/パスワード認証データの検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
email
,password
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
email: string
- ユーザーメールアドレスemailVerified: boolean
- メール確認ステータス(デフォルト: false)password: string
- ユーザーパスワード
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { credentialsSchema } = schemas;
const credentialsSchema = credentialsSchema({});
const validate = ajv.compile(credentialsSchema.schemas as SchemaDefinition);
const isValid = validate({ email: 'user@example.com', password: 'password123' });
identitySchema
プロバイダーと認証情報の両方の認証をサポートするアイデンティティスキーマ。
目的: 複数の認証方法をサポートする認証データの検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
provider
+providerId
またはemail
+password
- 追加プロパティ:
false
(厳密な検証) - 検証: provider+providerId または email+password のいずれかが必要
- コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { identitySchema } = schemas;
const identitySchema = identitySchema({});
const validate = ajv.compile(identitySchema.schemas as SchemaDefinition);
// プロバイダー認証
const isValidProvider = validate({ provider: 'google', providerId: '12345' });
// 認証情報認証
const isValidCredentials = validate({ email: 'user@example.com', password: 'password123' });
loginWithCredentialsSchema
ユーザー認証のためのログイン認証情報スキーマ。
目的: オプションのデバイスフィンガープリンティング付きログインリクエストデータの検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
email
,password
- オプションフィールド:
fingerprint
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { loginWithCredentialsSchema } = schemas;
const loginSchema = loginWithCredentialsSchema({});
const validate = ajv.compile(loginSchema.schemas as SchemaDefinition);
const isValid = validate({
email: 'user@example.com',
password: 'password123',
fingerprint: 'device-fingerprint-hash'
});
registerCredentialsSchema
メール/パスワードまたはトークン/パスワード検証による ユーザー登録スキーマ。
目的: ユーザー登録リクエストのスキーマバリデーター
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
password
(常に必須) - オプションフィールド:
email
,token
- 検証:
email
+password
またはtoken
+password
のいずれかが必要 - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { registerCredentialsSchema } = schemas;
const registerSchema = registerCredentialsSchema({});
const validate = ajv.compile(registerSchema.schemas as SchemaDefinition);
const isValid = validate({
email: 'user@example.com',
password: 'password123'
});
sendVerificationEmailSchema
メール確認送信リクエストを検証するためのJSONスキーマ。
目的: メール確認送信エンドポイントのリクエストボディの検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(すべてのフィールドはオプション)
- 追加プロパティ:
false
(厳密な検証) - パラメータ:
userId
(パスパラメータ) - コンテンツタイプ:
application/json
- リクエストボディ:
required
- プロパティ:
fingerprint?: string
- オプションのデバイスフィンガープリンティング
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { sendVerificationEmailSchema } = schemas;
const verificationSchema = sendVerificationEmailSchema({});
const validate = ajv.compile(verificationSchema.schemas as SchemaDefinition);
const isValid = validate({
fingerprint: 'device-fingerprint-hash'
});
confirmEmailSchema
メール確認のためのトークン検証付きメール確認スキーマ。
目的: メール確認リクエストのスキーマバリデーター
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
token
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- リクエストボディ:
required
- プロパティ:
token: string
- メールからの確認トークン
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { confirmEmailSchema } = schemas;
const confirmSchema = confirmEmailSchema({});
const validate = ajv.compile(confirmSchema.schemas as SchemaDefinition);
const isValid = validate({
token: 'verification-token-123'
});
🔗 関連ドキュメント
- 認証ドメイン概要 - 認証ドメインの概要