コンテンツにスキップ

インストール

このガイドでは、Authrimの詳細なインストールと設定プロセスについて説明します。

システム要件

要件最小バージョン
Node.js>= 22.0.0
pnpm>= 9.0.0
Git最新版
Cloudflareアカウント無料枠以上

インストール手順

1. クローンとインストール

Terminal window
# リポジトリをクローン
git clone https://github.com/sgrastar/authrim.git
cd authrim
# 依存関係をインストール
pnpm install
# Cloudflareにログイン
wrangler login

2. 暗号鍵を生成

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

Terminal window
./scripts/setup-keys.sh

以下が作成されます:

ファイル用途
.keys/private.pemJWT署名用のRSA秘密鍵
.keys/public.jwk.jsonJWK形式の公開鍵
.keys/metadata.jsonKey IDとメタデータ

3. 環境変数を設定

Terminal window
# 環境変数を含む.dev.varsを作成
./scripts/setup-local-vars.sh
# ローカル開発用のwrangler.tomlを生成
./scripts/setup-local-wrangler.sh

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

KV名前空間

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

以下のKV名前空間が作成されます:

  • CLIENTS - OAuthクライアント登録
  • SETTINGS - システム設定
  • STATE_STORE - 認可コードと状態
  • NONCE_STORE - リプレイ保護

D1データベース

Terminal window
./scripts/setup-d1.sh

以下のためのauthrim-db D1データベースを作成:

  • ユーザーアカウント
  • セッションデータ
  • 監査ログ

Durable Objects

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

以下のDurable Objectsをデプロイ:

  • KeyManager - 暗号鍵管理
  • AuthorizationCodeStore - 強整合性の認可コードストレージ
  • SessionStore - セッション管理
  • RefreshTokenRotator - リフレッシュトークンのローテーション

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

マジックリンク認証用:

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

Resendなしでは、マジックリンクはメールを送信する代わりに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-discoveryOIDCディスカバリー/.well-known/*
op-auth認可/authorize, /consent
op-tokenトークン発行/token, /introspect, /revoke
op-userinfoユーザー情報/userinfo
op-managementAdmin API/api/admin/*, /register
op-async非同期フロー/device_authorization, /bc-authorize
scimユーザープロビジョニング/scim/v2/*
routerリクエストルーティング全て(開発のみ)

利用可能なスクリプト

開発

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 # UIをCloudflare Pagesにデプロイ
pnpm run deploy:all # すべてをデプロイ

トラブルシューティング

ポート8787が使用中

Terminal window
# ポートを使用しているプロセスを終了
lsof -ti:8787 | xargs kill -9
# または別のポートを使用
wrangler dev --port 8788

KV名前空間が見つからない

Terminal window
wrangler kv namespace list
./scripts/setup-kv.sh --env=dev

秘密鍵が見つからない

Terminal window
./scripts/setup-keys.sh
./scripts/setup-local-vars.sh

次のステップ