プラグインシステム概要
Authrimプラグインシステムは、外部サービスやカスタム機能をAuthrim IDプラットフォームに統合するためのモジュラーなアーキテクチャを提供します。プラグインのコードはデプロイ時にWorkerへバンドルされ、設定はWorker環境値によるbootstrapと、KVに保存されたグローバル設定・テナント別overrideから解決されます。
プラグインでできること
Section titled “プラグインでできること”| プラグインタイプ | 能力パターン | 例 |
|---|---|---|
| Notifier | notifier.{channel} | メール、SMS、Push通知 |
| IDプロバイダー | idp.{provider} | Google、SAML、OIDCフェデレーション |
| Authenticator | authenticator.{method} | TOTP、Passkey、OTP |
| Flow | flow.{name} | カスタム認証フローノード(将来) |
アーキテクチャ
Section titled “アーキテクチャ”プラグインシステムは、Workerのリクエスト処理、プラグイン能力登録、実行時インフラアクセスを分離する3層アーキテクチャに従います:
flowchart TB
subgraph Application["Application Layer"]
direction LR
A1[ar-auth]
A2[ar-token]
A3[ar-userinfo]
A4[ar-management]
end
subgraph Plugin["Plugin Layer"]
direction LR
P1[Notifier<br/>email, sms, push]
P2[IdP<br/>provider handlers]
P3[Authenticator<br/>method handlers]
end
subgraph Infra["Infrastructure Layer"]
direction LR
I1[Storage Stores<br/>D1, KV, DO, tenant profiles]
I2[Policy Infra<br/>ReBAC, ABAC]
end
Application -->|PluginContext| Plugin
Plugin -->|store and policy interfaces| Infra
レイヤーの特徴
Section titled “レイヤーの特徴”| 側面 | Plugin Layer | Infrastructure Layer |
|---|---|---|
| 切り替え | コードはデプロイ時、設定は実行時 | runtime storage profileまたはデプロイリソースの変更 |
| 障害影響 | 通常はその能力を使う機能に限定 | 共有storage、policy、protocol stateに影響し得る |
| テナント差異 | グローバル既定値 + テナント別override | 選択したruntime storage profileに依存 |
| 設定 | Worker bootstrap env + KV設定 | .authrim、wrangler bindings、D1/KV/DOリソース |
| 原則 | 説明 |
|---|---|
| ハイブリッド設定 | 静的コードバンドリングとbootstrap env/KVベースの設定 |
| 型安全性 | Zodスキーマ検証による完全なTypeScriptサポート |
| Cloudflare Native | Workersと明示的なデプロイbinding向けに設計 |
| マルチテナント | Workerが読み込むプラグインでテナント別設定をサポート |
Cloudflare Workersの制約
Section titled “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 |
ビルトインプラグイン
Section titled “ビルトインプラグイン”Authrimは現在、以下の公式Notifierプラグインをdiscovery用に登録します。ar-authは設定されている場合、Worker環境値からメールプラグインをbootstrapし、plugin context経由でKV overrideを解決します。
| プラグインID | タイプ | 説明 |
|---|---|---|
notifier-console | Notifier | 開発用コンソールロガー |
notifier-cloudflare | Notifier | Cloudflare Email Service binding |
notifier-resend | Notifier | Resend Email API |
AuthenticatorやIDプロバイダーの能力はPlugin APIに含まれますが、現在Admin UIのdiscoveryに自動登録されるのはNotifierプラグインのみです。追加の能力プラグインは、それを利用するWorkerで明示的に登録してください。
プラグインライフサイクル
Section titled “プラグインライフサイクル”┌─────────────────────────────────────────────────────────┐│ Plugin Lifecycle │├─────────────────────────────────────────────────────────┤│ 1. RESOLVE CONFIG ││ ├── bootstrap env、global KV、tenant KVをmerge ││ └── スキーマに対して設定を検証 │├─────────────────────────────────────────────────────────┤│ 2. INITIALIZE (optional) ││ ├── 外部サービスに接続 ││ ├── キャッシュをウォームアップ ││ └── 依存関係を検証 │├─────────────────────────────────────────────────────────┤│ 3. REGISTER ││ ├── レジストリに能力を登録 ││ └── 同期的、副作用なし │├─────────────────────────────────────────────────────────┤│ 4. ACTIVE ││ └── プラグインが登録されたハンドラー経由でリクエストを処理│├─────────────────────────────────────────────────────────┤│ 5. HEALTH / ADMIN INSPECTION ││ ├── schemaとstatusを公開 ││ └── 実装されている場合は依存先healthを報告 │└─────────────────────────────────────────────────────────┘次のステップ
Section titled “次のステップ”- プラグインの作成 - 最初のAuthrimプラグインを構築
- プラグイン能力 - 各能力タイプのハンドラーを実装
- 設定スキーマ - プラグイン設定の定義と検証
- デプロイと配布 - プラグインのパッケージングと公開
- Admin UI管理 - Admin Consoleでのプラグイン管理
- プラグイン管理API - プラグイン管理のAPIリファレンス