🔍 認証スキーマブロック
認証スキーマブロックは、NodeBlocks アプリケーションにおける認証データの検証のための JSON Schema 定義を提供します。これらのスキーマは、安全な認証フローを確保し、認証関連の API エンドポイントに対する明確なコントラクトを提供します。
🎯 概要
認証スキーマブロックは次のことを目的として設計されています:
- 認証データを処理前に検証する
- 複数の認証方法をサポートする(OAuth、メール/パスワード)
- 適切な検証により安全な認証を確保する
- メール認証ワークフローを有効にする
- 拡張セキュリティのためにデバイスフィンガープリンティングをサポートする
📋 認証スキーマタイプ
プロバイダー認証スキーマ
OAuth およびサードパーティ認証の検証。
資格情報認証スキーマ
メール/パスワード認証の検証。
アイデンティティスキーマ
複数の方法をサポートする柔軟な認証。
メール認証スキーマ
メール認証および確認ワークフロー。
🔧 利用可能な認証スキーマ
passwordSchema
セキュリティ要件とパターンマッチングを使用したパスワード検証スキーマ。
目的: 他の認証スキーマで使用されるパスワード検証のベーススキーマとして機能します
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし
- 追加プロパティ:
false
- プロパティ:
password: string
— 8-24 文字;少なくとも1つの小文字と1つの数字;?/_- を許可
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { passwordSchema } = schemas;
const validate = ajv.compile(passwordSchema as SchemaDefinition);
const isValid = validate({ password: 'securePass123' });
providerSchema
OAuth およびサードパーティ認証のためのプロバイダー認証スキーマ。
目的: OAuth プロバイダー認証データを検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
provider
,providerId
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
provider: string
- OAuth プロバイダー名providerId: string
- プロバイダー固有のユーザー ID
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { providerSchema } = schemas;
const validate = ajv.compile(providerSchema 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 validate = ajv.compile(credentialsSchema as SchemaDefinition);
const isValid = validate({ email: 'identity@example.com', password: 'password123' });
changePasswordSchema
ユーザーアカウントのパスワード変更のための現在および新規パスワード検証を使用したパスワード変更スキーマ。
目的: セキュリティ要件を使用したパスワード変更リクエストを検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
password
,newPassword
- 追加プロパティ:
false
(厳密な検証) - パラメーター:
identityId
(パスパラメーター) - Content-Type:
application/json
- リクエストボディ:
required
- プロパティ:
password: string
- 検証のための現在のパスワードnewPassword: string
- セキュリティ要件を満たす新規パスワード
新規パスワード要件:
- 長さ: 8-24 文字
- パターン: 少なくとも1つの小文字と1つの数字を含む必要がある
- 許可文字: 文字、数字、および特殊文字(?/_-)
- 検証: Regex パターンが newPassword のセキュリティ要件を強制
- アイデンティティ ID: アイデンティティ識別のためにパスパラメーターとして必須
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { changePasswordSchema } = schemas;
// 機能合成に適用:
export const changePasswordFeature = compose(changePasswordSchema, changePasswordRoute);
completePasswordResetSchema
アカウント回復のためのパスワード検証を使用したパスワードリセット完了スキーマ。
目的: セキュリティ要件を使用したパスワードリセット完了リクエストを検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
password
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
application/json
- リクエストボディ:
required
- プロパティ:
password: string
- セキュリティ要件を満たす新規パスワード
パスワード要件:
- 長さ: 8-24 文字
- パターン: 少なくとも1つの小文字と1つの数字を含む必要がある
- 許可文字: 文字、数字、および特殊文字(?/_-)
- 検証: passwordSchema のセキュリティ要件を継承
- ワークフロー: リセットリンク受信後のパスワードリセットワークフローで使用
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { completePasswordResetSchema } = schemas;
// 機能合成に適用:
export const completePasswordResetFeature = compose(completePasswordResetSchema, completePasswordResetRoute);
activateSchema
アカウント有効化のためのアイデンティティ検証を使用したアイデンティティ有効化スキーマ。
目的: アイデンティティ ID 検証を使用したアイデンティティ有効化リクエストを検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
identityId
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
application/json
- リクエストボディ:
required
- プロパティ:
identityId: string
- 有効化のためのユーザーアイデンティティ識別子
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { activateSchema } = schemas;
// 機能合成に適用:
export const activateFeature = compose(activateSchema, activateRoute);
deactivateSchema
アカウント無効化のためのアイデンティティ検証を使用したアイデンティティ無効化スキーマ。
目的: アイデンティティ ID 検証を使用したアイデンティティ無効化リクエストを検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
identityId
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
application/json
- リクエストボディ:
required
- プロパティ:
identityId: string
- 無効化のためのユーザーアイデンティティ識別子
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { deactivateSchema } = schemas;
// 機能合成に適用:
export const deactivateFeature = compose(deactivateSchema, deactivateRoute);
identitySchema
プロバイダーおよび資格情報認証の両方をサポートするアイデンティティスキーマ。
目的: 複数の認証方法をサポートした認証データを検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
provider
+providerId
またはemail
+password
のいずれか - 追加プロパティ:
false
(厳密な検証) - 検証: provider+providerId または email+password のいずれかを要求
- Content-Type:
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: 'identity@example.com', password: 'password123' });
loginWithCredentialsSchema
アイデンティティ認証のためのログイン資格情報スキーマ。
目的: オプションのデバイスフィンガープリンティングを使用したログインリクエストデータを検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
email
,password
- オプションフィールド:
fingerprint
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
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: 'identity@example.com',
password: 'password123',
fingerprint: 'device-fingerprint-hash'
});
registerCredentialsSchema
メール/パスワードまたはトークン/パスワード検証を使用したアイデンティティ登録スキーマ。
Purpose: アイデンティティ登録リクエストのためのスキーマバリデーター
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
password
(常に必須) - オプションフィールド:
email
,token
- 検証:
email
+password
またはtoken
+password
のいずれかを要求 - Content-Type:
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: 'identity@example.com',
password: 'password123'
});
sendVerificationEmailSchema
認証メール送信リクエストを検証するための JSON スキーマ。
目的: 認証メール送信エンドポイントのリクエストボディを検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(すべてのフィールドがオプション)
- 追加プロパティ:
false
(厳密な検証) - パラメーター:
identityId
(パスパラメーター) - Content-Type:
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
(厳密な検証) - Content-Type:
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'
});
changeEmailSchema
ユーザーメール更新のためのアイデンティティ検証を使用したメール変更スキーマ。
目的: メール変更リクエストのためのスキーマバリデーター
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
email
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
application/json
- リクエストボディ:
required
- パラメーター:
identityId
(パスパラメーター) - プロパティ:
email: string
- アイデンティティアカウントの新規メールアドレス
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { changeEmailSchema } = schemas;
const changeEmailSchema = changeEmailSchema({});
const validate = ajv.compile(changeEmailSchema.schemas as SchemaDefinition);
const isValid = validate({
email: 'newemail@example.com'
});
checkTokenSchema
必須のトークンとオプションのターゲットパラメーターを使用したトークン検証スキーマ。
目的: トークン検証リクエストのためのスキーマバリデーター
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
token
- オプションフィールド:
target
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
application/json
- リクエストボディ:
required
- プロパティ:
token: string
- 検証する JWT トークン文字列target?: string
- トークン検証のターゲットコンテキスト(例: 'confirm-email', 'change-email')
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { checkTokenSchema } = schemas;
const checkTokenSchema = checkTokenSchema({});
const validate = ajv.compile(checkTokenSchema.schemas as SchemaDefinition);
const isValid = validate({
token: 'jwt-token-here',
target: 'confirm-email'
});
confirmNewEmailSchema
メール変更認証のためのトークン検証を使用した新規メール確認スキーマ。
目的: 新規メール確認リクエストのためのスキーマバリデーター
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
token
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
application/json
- リクエストボディ:
required
- プロパティ:
token: string
- 新規メールからの認証トークン
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { confirmNewEmailSchema } = schemas;
const confirmNewEmailSchema = confirmNewEmailSchema({});
const validate = ajv.compile(confirmNewEmailSchema.schemas as SchemaDefinition);
const isValid = validate({
token: 'verification-token-123'
});
sendResetPasswordLinkEmailSchema
パスワード回復のためのメール検証を使用したパスワードリセットメールスキーマ。
目的: パスワードリセットメールリクエストのためのスキーマバリデーター
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
email
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
application/json
- リクエストボディ:
required
- プロパティ:
email: string
- パスワードリセットのためのユーザーメールアドレス
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { sendResetPasswordLinkEmailSchema } = schemas;
const resetPasswordSchema = sendResetPasswordLinkEmailSchema({});
const validate = ajv.compile(resetPasswordSchema.schemas as SchemaDefinition);
const isValid = validate({
email: 'identity@example.com'
});
🔗 関連ドキュメント
- Authentication Domain Overview - 認証ドメインの概要