コンテンツにスキップ

プラグインシステム概要

Authrim には、Worker に組み込む TypeScript のプラグイン API と、Plugin Runner が管理するインストール・能力のモデルがあります。コードの読み込み、設定、実行の契約は異なります。

方式コードの実行設定・スコープ
組み込み AuthrimPluginWorker に import し、ar-lib-plugin で登録Zod スキーマ、初期設定、全体・テナント別の上書き
Runner の in_processRunner のレジストリに存在するハンドラーを実行インストールと能力のポリシー。マニフェストだけでハンドラーが生成されるわけではありません
Runner の dynamic_workerR2 の PLUGIN_BUNDLES から承認済みバンドルを取得し、PLUGIN_LOADER で実行テナント別インストール、固定された成果物とポリシー、限定したホスト機能と外部通信

動的な読み込みは実装されています。ただし、Admin UI から任意の npm パッケージを入れる方式ではありません。Setup がマニフェストを検出・検証して成果物とポリシーを公開し、Runner が実行対象を検証します。

自動登録の対象には通知と人間確認のプラグインがあります。

  • notifier-console、notifier-cloudflare、notifier-resend
  • human-verification-cloudflare-turnstile
  • human-verification-google-recaptcha
  • human-verification-hcaptcha

一覧にあることと、有効化・認証情報の設定が済んでいることは別です。ar-lib-plugin に TOTP などの実装やインターフェースがあっても、すべての認証方式・プロバイダーが自動登録されるわけではありません。

Runner はテナントのインストールを解決し、同期フックと非同期配送を処理します。ポリシーとバージョンの状態を検証し、外部アクセスを制限します。通知の非同期経路では、暗号化された配信内容を保存し、フックにはその参照を渡す仕組みがあります。

独自 Worker に渡すのは、承認済みのホストインターフェースとプラグイン用リソースのラッパーです。親 Worker の環境全体や Core・PII への無制限なアクセスではありません。プラグイン専用の D1・KV・R2 には、スコープ、アクセス権、作成方法の宣言が必要です。

動的プラグインは、マニフェストとバンドルの作成 → Setup による公開 → テナントの認証情報・リソース設定 → 有効化 → 対応する呼び出しの実行 → 障害・配送状態の確認、という流れです。新しい成果物の公開と、既存インストールへの展開は別の操作です。

無効化はインストールの使用を止める操作です。アンインストールはリソースの後処理を含む別の操作で、稼働中 Worker のファイルシステムからパッケージを削除する操作ではありません。