Mapping Functions
関連ドキュメント
- HTTP Request Executor - HTTP通信でのMapping Functions利用
- 外部サービス連携ガイド - 実際の統合例
概要
Mapping Functionsとは
Mapping Functionsは、データマッピング処理において値の変換や生成を行う拡張可能な機能です。外部サービス連携(HTTP Request Executor)やID Token生成時に、動的なデータ変換を宣言的に定義できます。
解決する課題
- 動的な値生成: リクエストごとに異なるランダム文字列やタイムスタンプを生成
- フォーマット変換: テンプレートベースの文字列フォーマット、型変換
- 条件付きマッピング: 値の存在チェックやデフォルト値設定
- 拡張性: 新しい変換ロジックを追加せずにビジネスロジックを拡張
利用シーン
-
外部サービス連携(HTTP Request Executor) - リクエスト/レスポンスのマッピング
- Identity Verification API連携
- KYC(本人確認)サービス連携
- 動的なnonce/request_id生成
- 詳細: 外部サービス連携ガイド
-
ID Token Claims生成 - クレーム値のフォーマット変換や動的生成
- ユーザー情報の正規化(case, trim)
- カスタムクレーム生成(format, if, switch)
-
Webhook/Security Event送信 - 署名生成やタイムスタンプ付与
- イベントID生成(uuid4)
- タイムスタンプ(now)
- 詳細: HTTP Request Executor
-
内部処理 - トレースIDやセッションID生成
アーキテクチャ
システム全体での位置づけ
┌─────────────────────────────────────────────────────┐
│ Application Layer (UseCase/Handler) │
│ - Identity Verification │
│ - Token Generation │
│ - Webhook Transmission │
└──────────────────┬──────────────────────────────────┘
│ uses
▼
┌─────────────────────────────────────────────────────┐
│ HTTP Request Executor (外部サービス連携) │
│ ┌───────────────────────────────────────────────┐ │
│ │ HttpRequestExecutor │ │
│ │ - リクエスト送信 │ │
│ │ - リトライ制御 │ │
│ │ - OAuth/HMAC認証 │ │
│ └──────────────────┬────────────────────────────┘ │
│ │ uses │
│ ▼ │
│ ┌───────────────────────────────────────────────┐ │
│ │ RequestBodyMapper / ResponseBodyMapper │ │
│ │ - リクエスト変換(DTO → 外部API形式) │ │
│ │ - レスポンス変換(外部API → DTO) │ │
│ └───────────────────────────────────────────────┘ │
└──────────────────┬──────────────────────────────────┘
│ delegates
▼
┌─────────────────────────────────────────────────────┐
│ Mapping System (idp-server-platform) │
│ ┌───────────────────────────────────────────────┐ │
│ │ FunctionRegistry │ │
│ │ - 全Function管理 │ │
│ │ - Function名による動的解決 │ │
│ └──────────────────┬────────────────────────────┘ │
│ │ resolves │
│ ▼ │
│ ┌───────────────────────────────────────────────┐ │
│ │ ValueFunctions (26個の実装クラス) │ │
│ │ - 文字列操作: format, case, substring... │ │
│ │ - ID生成: random_string, uuid4, uuid5... │ │
│ │ - 条件分岐: if, switch, exists │ │
│ │ - 型変換: convert_type │ │
│ │ - 配列操作: map, filter, join, split, │ │
│ │ append, remove, merge, pluck, │ │
│ │ reshape │ │
│ └───────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
コンポーネント関係
┌──────────────────────────────────────────────────────┐