コンテンツにスキップ

プラグインシステム概要

Authrimプラグインシステムは、外部サービスやカスタム機能をAuthrim IDプラットフォームに統合するためのモジュラーで拡張可能なアーキテクチャを提供します。

プラグインでできること

プラグインタイプ能力パターン
Notifiernotifier.{channel}メール、SMS、Push通知
IDプロバイダーidp.{provider}Google、SAML、OIDCフェデレーション
Authenticatorauthenticator.{method}TOTP、Passkey、OTP
Flowflow.{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 LayerInfrastructure Layer
切り替え動的(KV設定)デプロイ時(再起動必要)
障害影響影響を受ける機能のみシステム全体停止
テナント差異テナントごとに異なる可能通常は共有
設定Admin API + Admin UI環境変数

設計原則

原則説明
ハイブリッド設定静的コードバンドリングと動的KVベースの設定
型安全性Zodスキーマ検証による完全なTypeScriptサポート
Cloudflare NativeCloudflare Workers向けに最適化(動的インポートなし)
マルチテナントテナント固有のプラグイン設定をサポート

Cloudflare Workersの制約

AuthrimはCloudflare Workers上で動作するため、プラグインシステムには特定の制約があります:

信頼レベル

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

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

ビルトインプラグイン

Authrimには以下の公式プラグインが標準で含まれています:

プラグインIDタイプ説明
notifier-consoleNotifier開発用コンソールロガー
notifier-resendNotifierResend Email API
authenticator-totpAuthenticatorTOTP (RFC 6238)

プラグインライフサイクル

┌─────────────────────────────────────────────────────────┐
│ Plugin Lifecycle │
├─────────────────────────────────────────────────────────┤
│ 1. LOAD │
│ ├── スキーマに対して設定を検証 │
│ └── プラグインインスタンスを作成 │
├─────────────────────────────────────────────────────────┤
│ 2. INITIALIZE (optional) │
│ ├── 外部サービスに接続 │
│ ├── キャッシュをウォームアップ │
│ └── 依存関係を検証 │
├─────────────────────────────────────────────────────────┤
│ 3. REGISTER │
│ ├── レジストリに能力を登録 │
│ └── 同期的、副作用なし │
├─────────────────────────────────────────────────────────┤
│ 4. ACTIVE │
│ └── プラグインが登録されたハンドラー経由でリクエストを処理│
├─────────────────────────────────────────────────────────┤
│ 5. SHUTDOWN (optional) │
│ ├── 接続をクローズ │
│ └── リソースをクリーンアップ │
└─────────────────────────────────────────────────────────┘

次のステップ