コンテンツにスキップ

プラグインシステム概要

Authrimプラグインシステムは、外部サービスやカスタム機能をAuthrim IDプラットフォームに統合するためのモジュラーなアーキテクチャを提供します。プラグインのコードはデプロイ時にWorkerへバンドルされ、設定はWorker環境値によるbootstrapと、KVに保存されたグローバル設定・テナント別overrideから解決されます。

プラグインタイプ能力パターン
Notifiernotifier.{channel}メール、SMS、Push通知
IDプロバイダーidp.{provider}Google、SAML、OIDCフェデレーション
Authenticatorauthenticator.{method}TOTP、Passkey、OTP
Flowflow.{name}カスタム認証フローノード(将来)

プラグインシステムは、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
側面Plugin LayerInfrastructure 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 NativeWorkersと明示的なデプロイbinding向けに設計
マルチテナントWorkerが読み込むプラグインでテナント別設定をサポート

AuthrimはCloudflare Workers上で動作するため、プラグインの読み込みは明示的です:

プラグインの信頼性は、メタデータの主張ではなく配布元によって決定されます:

信頼レベルソースUI表示
officialar-lib-plugin/builtin/に組み込みAuthrim Official (Built-in)
officialnpm @authrim/*スコープAuthrim Official (npm)
communityその他のnpmパッケージまたはローカルファイルCommunity Plugin

Authrimは現在、以下の公式Notifierプラグインをdiscovery用に登録します。ar-authは設定されている場合、Worker環境値からメールプラグインをbootstrapし、plugin context経由でKV overrideを解決します。

プラグインIDタイプ説明
notifier-consoleNotifier開発用コンソールロガー
notifier-cloudflareNotifierCloudflare Email Service binding
notifier-resendNotifierResend Email API

AuthenticatorやIDプロバイダーの能力はPlugin APIに含まれますが、現在Admin UIのdiscoveryに自動登録されるのはNotifierプラグインのみです。追加の能力プラグインは、それを利用するWorkerで明示的に登録してください。

┌─────────────────────────────────────────────────────────┐
│ 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を報告 │
└─────────────────────────────────────────────────────────┘