コンテンツにスキップ

インストール

このガイドでは、Authrimソースリポジトリからの詳細なインストールと設定プロセスについて説明します。ガイド付きデプロイにはセットアップウィザードを使用してください。

要件最小バージョン
Node.js>= 22.0.0
pnpm>= 9.0.0
Git最新版
Cloudflareアカウント無料枠以上
Terminal window
# リポジトリをクローン
git clone https://github.com/sgrastar/authrim.git
cd authrim
# 依存関係をインストール
pnpm install
# Cloudflareにログイン
wrangler login

JWT署名に使用するRSA鍵を生成:

Terminal window
./scripts/setup-keys.sh

以下が作成されます:

ファイル用途
.keys/private.pemJWT署名用のRSA秘密鍵
.keys/public.jwk.jsonJWK形式の公開鍵
.keys/metadata.jsonKey IDとメタデータ
Terminal window
# 環境変数を含む.dev.varsを作成
./scripts/setup-local-vars.sh
# ローカル開発用のwrangler.tomlを生成
./scripts/setup-local-wrangler.sh

4. Cloudflareリソースをセットアップ

Section titled “4. Cloudflareリソースをセットアップ”
Terminal window
./scripts/setup-kv.sh --env=dev

キャッシュと設定データ用に、環境別のKV名前空間が作成されます。現在の主なbindingは以下です:

  • CLIENTS_CACHE - OAuthクライアントメタデータキャッシュ
  • INITIAL_ACCESS_TOKENS - Dynamic Client Registration用initial access token
  • SETTINGS - システム設定
  • REBAC_CACHE - RBAC/ReBACクレームキャッシュ
  • USER_CACHE - ユーザーメタデータキャッシュ
  • AUTHRIM_CONFIG - 生成されたデプロイ設定
  • TENANT_RUNTIME_REGISTRY - テナントランタイムレジストリのスナップショット
  • STATE_STORE - 互換性/ランタイム状態ストレージ
  • CONSENT_CACHE - 同意キャッシュ

認可コード、リフレッシュトークンローテーション、DPoP JTIリプレイチェック、PAR request state、デバイスコード、CIBAリクエスト、SAML state、レート制限はKVではなくDurable Objectsで扱います。

Terminal window
./scripts/setup-d1.sh --env=dev

デプロイ単位のD1データベースを作成します:

Bindingデータベース名パターン用途
DB{env}-authrim-core-dbCore OAuth/OIDC、policy、consent、passkey、custom claim、transient authデータ
DB_PII{env}-authrim-pii-dbsensitive identity values、subject identifiers、linked identity records、PII tombstones、PII audit data
DB_ADMIN{env}-authrim-admin-dbAdmin users、Admin RBAC、runtime profiles、tenant database registry、audit/logging controlデータ

新規インストールでは以下のSQLが適用されます:

  • migrations/001_core_foundation.sql から最新のcore migration
  • migrations/pii/001_pii_schema.sql
  • migrations/admin/001_admin_users_rbac_security.sql から最新のadmin migration

Authrimはランタイムストレージプロファイルでlogical sourceとstorage sliceをルーティングします。デフォルトは builtin:storage:shared-d1 です。より大規模または規制要件のある環境では、生成されたtenant D1 bindingを使う builtin:storage:tenant-d1 や、対応済みの外部DBプロファイルを使用できます。

Terminal window
./scripts/setup-durable-objects.sh

@authrim/ar-lib-core からDurable Objectsをデプロイします。主なbindingは以下です:

  • SESSION_STORE / SESSION_CLIENT_STORE - セッション状態とクライアントセッションミラー
  • KEY_MANAGER - 暗号鍵管理
  • AUTH_CODE_STORE - OAuth認可コードストレージ
  • REFRESH_TOKEN_ROTATOR - リフレッシュトークンローテーション
  • CHALLENGE_STORE - パスキー/ワンタイムチャレンジ状態
  • RATE_LIMITER - アトミックなレート制限
  • PAR_REQUEST_STORE - PAR request URI状態
  • DPOP_JTI_STORE - DPoPリプレイ保護
  • DEVICE_CODE_STORE / CIBA_REQUEST_STORE - Device FlowとCIBA状態
  • TOKEN_REVOCATION_STORE - トークン失効状態
  • SAML_REQUEST_STORE / SAML_AGGREGATE_METADATA_STORE - SAML requestとmetadata状態
  • FLOW_STATE_STORE - Flow Engine runtime state

5. オプション:メール設定(Resend)

Section titled “5. オプション:メール設定(Resend)”

Email Code認証用:

Terminal window
./scripts/setup-resend.sh --env=local

Resendなしでは、Email Codeの値はコンソールに出力されます(開発に便利)。

authrim/
├── packages/
│ ├── ar-lib-core/ # Core services、schemas、Durable Objects、storage routing
│ ├── ar-discovery/ # Discovery & JWKSエンドポイント
│ ├── ar-auth/ # 認可、ログイン、同意、Flow Engine
│ ├── ar-token/ # Token、introspection、revocation、token exchange
│ ├── ar-userinfo/ # UserInfoエンドポイント
│ ├── ar-management/ # Admin APIと管理サーフェス
│ ├── ar-async/ # Device Flow & CIBA
│ ├── ar-saml/ # SAML IdP/SP
│ ├── ar-bridge/ # 外部IdP bridge
│ ├── ar-policy/ # Policy service
│ ├── ar-vc/ # Verifiable Credentials
│ ├── ar-router/ # Service Bindings router
│ ├── ar-admin-ui/ # Admin UI worker
│ ├── ar-login-ui/ # Login UI worker
│ ├── setup/ # @authrim/setup CLIとWeb UI
│ ├── ar-lib-scim/ # SCIM library
│ ├── ar-lib-logging/ # Logging/audit runtime
│ └── ar-lib-policy/ # Policy engine library
├── scripts/ # セットアップ&デプロイスクリプト
├── migrations/ # Core、PII、Admin D1マイグレーション
├── conformance/ # OpenID適合性テスト
└── test/ # 環境検証とsmoke tests
ワーカー用途エンドポイント
ar-discoveryOIDC Discovery/.well-known/*
ar-auth認可、ログイン、同意/authorize, /login, /consent, flow routes
ar-tokenトークン発行とトークン操作/token, /introspect, /revoke, token exchange
ar-userinfoUserInfo/userinfo
ar-managementAdmin APIと管理サーフェス/api/admin/*, /register
ar-async非同期フロー/device_authorization, /bc-authorize
ar-samlSAML IdP/SPSAML metadata, SSO, SLO, ACS routes
ar-bridge外部IdP bridgeSocial login, linked identity, handoff routes
ar-policyPolicy evaluationPolicy check/evaluation routes
ar-vcVerifiable CredentialsVC issuer/verifier routes
ar-routerService Bindingsによる公開ルーティングリクエストを各component workerへ転送
Terminal window
pnpm run dev # ホットリロードですべてのワーカーを起動
pnpm run build # すべてのパッケージをビルド
pnpm run build:api # APIワーカーのみビルド(UIを除く)
Terminal window
pnpm run test # ユニットテストを実行
pnpm run test:e2e # E2Eテストを実行(Playwright)
pnpm run test:e2e:ui # UIでE2Eテストを実行
pnpm run test:lighthouse # Lighthouseパフォーマンステストを実行
Terminal window
pnpm run lint # ESLintを実行
pnpm run typecheck # TypeScript型チェック
pnpm run format # Prettierでコードをフォーマット
pnpm run format:check # コードフォーマットをチェック
Terminal window
pnpm run deploy # リトライロジックでワーカーをデプロイ
pnpm run deploy:ui # Admin UIとLogin UI workerをデプロイ
pnpm run deploy:all # すべてをデプロイ
Terminal window
pnpm run setup # ソースからセットアップWeb UIを起動
pnpm run setup:init # 新しい環境を初期化
pnpm run setup:deploy # 設定済み環境をデプロイ
pnpm run setup:status # デプロイ状態を表示
pnpm run setup:info # リソース情報を表示

tenant-D1環境では以下も使用します:

Terminal window
npx @authrim/setup tenant-db-pool-status --env prod
npx @authrim/setup tenant-db-pool-expand --env prod --add-slots 10
npx @authrim/setup tenant-db-migrate-all --env prod
Terminal window
# ポートを使用しているプロセスを終了
lsof -ti:8787 | xargs kill -9
# または別のポートを使用
wrangler dev --port 8788
Terminal window
wrangler kv namespace list
./scripts/setup-kv.sh --env=dev
Terminal window
./scripts/setup-keys.sh
./scripts/setup-local-vars.sh