メインコンテンツまでスキップ
バージョン: 0.5.0 (最新)

🔍 認証スキーマブロック

認証スキーマブロックは、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'
});

🔗 関連ドキュメント