プラグインシステム概要
Authrimプラグインシステムは、外部サービスやカスタム機能をAuthrim IDプラットフォームに統合するためのモジュラーで拡張可能なアーキテクチャを提供します。
プラグインでできること
| プラグインタイプ | 能力パターン | 例 |
|---|---|---|
| Notifier | notifier.{channel} | メール、SMS、Push通知 |
| IDプロバイダー | idp.{provider} | Google、SAML、OIDCフェデレーション |
| Authenticator | authenticator.{method} | TOTP、Passkey、OTP |
| Flow | flow.{name} | カスタム認証フローノード(将来) |
アーキテクチャ
プラグインシステムは、関心の分離と明確な境界を提供する3層アーキテクチャに従います:
flowchart TB
subgraph Application["Application Layer"]
direction LR
A1[op-auth]
A2[op-token]
A3[op-management]
end
subgraph Plugin["Plugin Layer"]
direction LR
P1[Notifier
email, sms, push]
P2[IdP
google, saml]
P3[Authenticator
totp, passkey]
end
subgraph Infra["Infrastructure Layer"]
direction LR
I1[Storage
KV, D1, DO]
I2[Policy Engine
ReBAC]
end
Application -->|PluginContext| Plugin
Plugin -->|Storage/Policy| Infra
レイヤーの特徴
| 側面 | Plugin Layer | Infrastructure Layer |
|---|---|---|
| 切り替え | 動的(KV設定) | デプロイ時(再起動必要) |
| 障害影響 | 影響を受ける機能のみ | システム全体停止 |
| テナント差異 | テナントごとに異なる可能 | 通常は共有 |
| 設定 | Admin API + Admin UI | 環境変数 |
設計原則
| 原則 | 説明 |
|---|---|
| ハイブリッド設定 | 静的コードバンドリングと動的KVベースの設定 |
| 型安全性 | Zodスキーマ検証による完全なTypeScriptサポート |
| Cloudflare Native | Cloudflare Workers向けに最適化(動的インポートなし) |
| マルチテナント | テナント固有のプラグイン設定をサポート |
Cloudflare Workersの制約
AuthrimはCloudflare Workers上で動作するため、プラグインシステムには特定の制約があります:
信頼レベル
プラグインの信頼性は、メタデータの主張ではなく配布元によって決定されます:
| 信頼レベル | ソース | UI表示 |
|---|---|---|
official | ar-lib-plugin/builtin/に組み込み | Authrim Official (Built-in) |
official | npm @authrim/*スコープ | Authrim Official (npm) |
community | その他のnpmパッケージまたはローカルファイル | Community Plugin |
ビルトインプラグイン
Authrimには以下の公式プラグインが標準で含まれています:
| プラグインID | タイプ | 説明 |
|---|---|---|
notifier-console | Notifier | 開発用コンソールロガー |
notifier-resend | Notifier | Resend Email API |
authenticator-totp | Authenticator | TOTP (RFC 6238) |
プラグインライフサイクル
┌─────────────────────────────────────────────────────────┐│ Plugin Lifecycle │├─────────────────────────────────────────────────────────┤│ 1. LOAD ││ ├── スキーマに対して設定を検証 ││ └── プラグインインスタンスを作成 │├─────────────────────────────────────────────────────────┤│ 2. INITIALIZE (optional) ││ ├── 外部サービスに接続 ││ ├── キャッシュをウォームアップ ││ └── 依存関係を検証 │├─────────────────────────────────────────────────────────┤│ 3. REGISTER ││ ├── レジストリに能力を登録 ││ └── 同期的、副作用なし │├─────────────────────────────────────────────────────────┤│ 4. ACTIVE ││ └── プラグインが登録されたハンドラー経由でリクエストを処理│├─────────────────────────────────────────────────────────┤│ 5. SHUTDOWN (optional) ││ ├── 接続をクローズ ││ └── リソースをクリーンアップ │└─────────────────────────────────────────────────────────┘次のステップ
- プラグインの作成 - 最初のAuthrimプラグインを構築
- プラグイン能力 - 各能力タイプのハンドラーを実装
- 設定スキーマ - プラグイン設定の定義と検証
- デプロイと配布 - プラグインのパッケージングと公開
- Admin UI管理 - Admin Consoleでのプラグイン管理
- プラグイン管理API - プラグイン管理のAPIリファレンス