メインコンテンツまでスキップ
バージョン: 0.4.2

🔍 認証スキーマブロック

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

🔗 関連ドキュメント