インストール
このガイドでは、Authrimの詳細なインストールと設定プロセスについて説明します。
システム要件
| 要件 | 最小バージョン |
|---|---|
| Node.js | >= 22.0.0 |
| pnpm | >= 9.0.0 |
| Git | 最新版 |
| Cloudflareアカウント | 無料枠以上 |
インストール手順
1. クローンとインストール
# リポジトリをクローンgit clone https://github.com/sgrastar/authrim.gitcd authrim
# 依存関係をインストールpnpm install
# Cloudflareにログインwrangler login2. 暗号鍵を生成
JWT署名に使用するRSA鍵を生成:
./scripts/setup-keys.sh以下が作成されます:
| ファイル | 用途 |
|---|---|
.keys/private.pem | JWT署名用のRSA秘密鍵 |
.keys/public.jwk.json | JWK形式の公開鍵 |
.keys/metadata.json | Key IDとメタデータ |
3. 環境変数を設定
# 環境変数を含む.dev.varsを作成./scripts/setup-local-vars.sh
# ローカル開発用のwrangler.tomlを生成./scripts/setup-local-wrangler.sh4. Cloudflareリソースをセットアップ
KV名前空間
./scripts/setup-kv.sh --env=dev以下のKV名前空間が作成されます:
CLIENTS- OAuthクライアント登録SETTINGS- システム設定STATE_STORE- 認可コードと状態NONCE_STORE- リプレイ保護
D1データベース
./scripts/setup-d1.sh以下のためのauthrim-db D1データベースを作成:
- ユーザーアカウント
- セッションデータ
- 監査ログ
Durable Objects
./scripts/setup-durable-objects.sh以下のDurable Objectsをデプロイ:
KeyManager- 暗号鍵管理AuthorizationCodeStore- 強整合性の認可コードストレージSessionStore- セッション管理RefreshTokenRotator- リフレッシュトークンのローテーション
5. オプション:メール設定(Resend)
マジックリンク認証用:
./scripts/setup-resend.sh --env=localResendなしでは、マジックリンクはメールを送信する代わりにURLを返します(開発に便利)。
プロジェクト構造
authrim/├── packages/│ ├── shared/ # 共有ユーティリティ、型、Durable Objects│ ├── op-discovery/ # ディスカバリー&JWKSエンドポイント│ ├── op-auth/ # 認可&同意│ ├── op-token/ # トークンエンドポイント│ ├── op-userinfo/ # UserInfoエンドポイント│ ├── op-management/ # Admin API&クライアント登録│ ├── op-async/ # Device Flow&CIBA│ ├── op-saml/ # SAML IdP/SP│ ├── scim/ # SCIM 2.0プロビジョニング│ ├── policy-core/ # ポリシーエンジンコア│ ├── policy-service/ # ポリシー評価サービス│ ├── external-idp/ # 外部IdP統合│ ├── router/ # 統合ルーター(テスト/開発用)│ └── ui/ # SvelteKitフロントエンド├── scripts/ # セットアップ&デプロイスクリプト├── migrations/ # D1データベースマイグレーション├── conformance/ # OpenID適合性テスト└── docs/ # ドキュメントワーカーアーキテクチャ
| ワーカー | 用途 | エンドポイント |
|---|---|---|
| op-discovery | OIDCディスカバリー | /.well-known/* |
| op-auth | 認可 | /authorize, /consent |
| op-token | トークン発行 | /token, /introspect, /revoke |
| op-userinfo | ユーザー情報 | /userinfo |
| op-management | Admin API | /api/admin/*, /register |
| op-async | 非同期フロー | /device_authorization, /bc-authorize |
| scim | ユーザープロビジョニング | /scim/v2/* |
| router | リクエストルーティング | 全て(開発のみ) |
利用可能なスクリプト
開発
pnpm run dev # ホットリロードですべてのワーカーを起動pnpm run build # すべてのパッケージをビルドpnpm run build:api # APIワーカーのみビルド(UIを除く)テスト
pnpm run test # ユニットテストを実行pnpm run test:e2e # E2Eテストを実行(Playwright)pnpm run test:e2e:ui # UIでE2Eテストを実行pnpm run test:lighthouse # Lighthouseパフォーマンステストを実行コード品質
pnpm run lint # ESLintを実行pnpm run typecheck # TypeScript型チェックpnpm run format # Prettierでコードをフォーマットpnpm run format:check # コードフォーマットをチェックデプロイ
pnpm run deploy # リトライロジックでワーカーをデプロイpnpm run deploy:ui # UIをCloudflare Pagesにデプロイpnpm run deploy:all # すべてをデプロイトラブルシューティング
ポート8787が使用中
# ポートを使用しているプロセスを終了lsof -ti:8787 | xargs kill -9
# または別のポートを使用wrangler dev --port 8788KV名前空間が見つからない
wrangler kv namespace list./scripts/setup-kv.sh --env=dev秘密鍵が見つからない
./scripts/setup-keys.sh./scripts/setup-local-vars.sh