CLI#

@auth-platform/cli は Management API によるリソース設定と、React Native / Expo アプリの初期設定を行う。各環境の統合概要は 概要、リソースと ID は概念、API キーと権限はManagement APIを参照する。

起動と共通オプション#

実行ファイル名は auth-platform である。インストール方法は配布環境に従う。auth-platform --help と auth-platform <command> --help はそのバージョンのコマンド構文を表示する。

オプション 説明
--json 結果を整形済み JSON で出力する。
--api-key <key> Management API キー。認証の優先順位はこのフラグ、AUTH_PLATFORM_API_KEY、保存済み資格情報の順。シェル履歴やプロセス一覧への露出を避けるため、通常は環境変数を使う。
--base-url <url> Management API のベース URL。優先順位はこのフラグ、AUTH_PLATFORM_BASE_URL、保存済み URL、既定値の順。
-V, --version CLI バージョンを表示する。
-h, --help ヘルプを表示する。

既定のベース URL は実サービスの Management API https://api.zeroword.smartcrab.ai/v1 である。別の URL を使う場合だけ AUTH_PLATFORM_BASE_URL または --base-url で上書きする。

export AUTH_PLATFORM_API_KEY='<Management API key>'
auth-platform login

認証とローカル設定#

login は API キーを Management API で検証して保存する。フラグ、AUTH_PLATFORM_API_KEY、TTY 上の対話プロンプトの順にキーを解決する。キーは表示しない。対話入力もなくキーが解決できない場合は usage error となる。検証後、credentials.json に API キーと既定値以外の base_url を保存する。

環境変数 用途
AUTH_PLATFORM_CONFIG_DIR CLI 設定ディレクトリを直接指定する。
XDG_CONFIG_HOME AUTH_PLATFORM_CONFIG_DIR が空の場合、$XDG_CONFIG_HOME/auth-platform を使う。
HOME 上記がない場合のホームディレクトリ。既定の保存先は ~/.config/auth-platform。
AUTH_PLATFORM_API_KEY Management API キー。
AUTH_PLATFORM_BASE_URL Management API のベース URL。
APPLE_TEAM_ID react-native configure が iOS Team ID を対話なしで解決する。

資格情報は <設定ディレクトリ>/credentials.json に JSON 形式で保存する。設定ディレクトリは新規作成時に mode 0700、資格情報ファイルは mode 0600 にする。形式は {"api_key":"<key>"} で、既定以外の base URL を使った場合だけ "base_url":"<url>" が加わる。CI ではフラグではなく AUTH_PLATFORM_API_KEY を使う。

init は実行したプロジェクトディレクトリに auth-platform.json を書き、workspace / project / environment ID と issuer を保存する。このファイルに資格情報は含まれず、CLI は verify の issuer / environment と react-native configure の issuer / environment を既定値として読む。公開識別子のみを含むため、コミットできる。

コマンド#

グローバルオプション --json、--api-key、--base-url は各サブコマンドでも利用できる。

init#

workspace → project → environment を名前で検索し、見つからないものを作成して auth-platform.json にリンクを書く。

オプション 説明
--workspace-name <name> workspace 名。既定値 Default。
--project-name <name> project 名。既定値 Default。
--environment-name <name> environment 名。既定値 development。
--type <type> test または production。既定値 test。
--force 既存リンクがあっても処理する。既存リソースを削除せず、同名の workspace / project / environment は再利用する。

同名検索は workspace と project が名前、environment が名前と type の一致で行われる。現行 Management API の POST /workspaces は Dashboard セッションを要求し、API キーによる workspace 作成は 401 Unauthorized となる。そのため API キーで使う前に Dashboard で workspace を用意すること。既存 workspace が見つかる場合、init はその workspace 内に project / environment を作成できる。

login#

追加のコマンド固有オプションはない。共通の --api-key、--base-url または AUTH_PLATFORM_API_KEY、AUTH_PLATFORM_BASE_URL を使う。キーを Management API の GET /workspaces?limit=1 で検証してから保存する。403 insufficient_scope はキー自体が有効である証明として扱い保存するが、workspace 読み取り権限がない旨を知らせる。

workspace create#

オプション 説明
--name <name> 必須。workspace 名。
--slug <slug> 省略可能な URL-safe slug。省略時は名前から生成される。

workspace を新規作成する。現行 Management API の作成ルートは Dashboard セッション認証のみを受け付けるため、Management API キーでは 401 Unauthorized になる。CLI に Dashboard ログイン機能はない。API キーで project / environment を設定する場合は、Dashboard で workspace を先に作成する。

project create#

オプション 説明
--workspace-id <id> 必須。workspace ID。
--name <name> 必須。project 名。
--slug <slug> 省略可能な URL-safe slug。省略時は名前から生成される。

env create#

オプション 説明
--project-id <id> 必須。project ID。
--type <type> 必須。test または production。
--name <name> 必須。environment 名。

issuer は API が生成する。

env rp-migration と env disable-legacy-rp#

コマンド オプション 説明
env rp-migration --environment-id <id> 必須。WebAuthn RP ID 移行状況を表示する。
env disable-legacy-rp --environment-id <id> 必須。対象 environment。
env disable-legacy-rp --confirm-rp-id <rp> 必須。legacy RP ID を正確に入力する確認値。

disable-legacy-rp は取り消しできない操作であり、legacy RP ID での passkey 認証を停止する。実行前に移行状況と対象 RP ID を確認する。

client create#

オプション 説明
--environment-id <id> 必須。environment ID。
--type <type> 必須。web_bff、web_spa、react_native のいずれか。
--name <name> 必須。クライアント名。
--redirect-uri <uri> redirect URI。繰り返し指定できる。
--post-logout-redirect-uri <uri> post-logout redirect URI。繰り返し指定できる。
--allowed-origin <origin> allowed origin。繰り返し指定できる。
--scope <scope> allowed scope。繰り返し指定できる。
--resource <url> allowed resource。繰り返し指定できる。
--token-endpoint-auth-method <method> none、client_secret_basic、client_secret_post。web_bff の既定値は client_secret_basic、web_spa / react_native の既定値は none。指定すれば既定値を上書きする。
--no-pkce Client の require_pkce を false で登録する。Authorization Server は require_pkce にかかわらず全 Client に PKCE S256 を要求するため、通常は指定しない。

confidential client の client_secret は作成成功時に一度だけ出力され、CLI は保存しない。--json 出力にも含まれるため、出力先を保護して直ちに秘密管理システムへ保存する。

react-native configure#

Expo アプリ設定を冪等に更新する。--dry-run は存在しない。app.json / app.config.json は読み書きし、app.config.ts / .js / .mjs / .cjs は npx --no-install expo config --json で評価するが、動的設定ファイルは自動編集できない。動的設定では scheme と Config Plugin を手動設定する。

オプション 説明
--project-dir <dir> Expo アプリディレクトリ。既定値は現在のディレクトリ。
--client-id <id> platform client ID。省略時は auth-platform.json の client_id を使う。init はこの値を記録しないため、通常は指定する。Config Plugin 登録に必要。
--environment-id <id> issuer / RP domain 解決用 environment ID。省略時は auth-platform.json を参照する。
--issuer <url> issuer URL を明示して解決値を上書きする。
--rp-domain <host> RP / Universal Link domain を明示して解決値を上書きする。
--scheme <scheme> URL scheme。既定値は既存の scheme、iOS bundle ID、Android package の順で解決する。reverse-DNS 形式を使う。
--ios-team-id <id> Apple Team ID。未指定時は APPLE_TEAM_ID、TTY での入力の順に解決する。
--keystore <path> Android keystore。既定値は <project-dir>/android/app/debug.keystore。
--keystore-alias <alias> カスタム keystore の alias。
--keystore-storepass <pass> カスタム keystore の store password。
--keystore-keypass <pass> カスタム keystore の key password。
--callback-path <path> OAuth callback path。既定値 oauth/callback。

Config Plugin の登録には --client-id と RP domain が必要である。Management API で client の mobile app 情報と不足している callback URI を更新する。AASA / assetlinks.json を確認し、.env に EXPO_PUBLIC_AUTH_ISSUER、EXPO_PUBLIC_AUTH_CLIENT_ID、EXPO_PUBLIC_AUTH_REDIRECT_URI を書き、app/login.tsx がなければサンプルを生成する。一部の初期手順が失敗すると後続手順は skip される。いずれかの手順が失敗すれば終了コード 1 になる。keystore password をコマンドライン引数へ置かない。

domain add と domain update#

コマンド オプション 説明
domain add --environment-id <id> 必須。environment ID。
domain add --hostname <host> 必須。登録する custom hostname。
domain add --rp-enabled 指定時、その domain を WebAuthn RP ID host としても有効化する。省略時は無効。
domain update --domain-id <id> 必須。custom domain ID。
domain update --rp-enabled <true|false> 必須。RP domain として使用するかを明示する。

domain add の後は表示された案内に従って Cloudflare for SaaS 向け DNS を設定する。domain update で有効化しても、domain が active になるまで RP ID / Hosted Login domain は切り替わらない。

provider configure#

オプション 説明
--environment-id <id> 必須。environment ID。
--provider <provider> 必須。google、apple、github、microsoft、generic_oidc のいずれか。
--mode <mode> 必須。managed または byo。
--provider-key <key> 同一 provider の複数接続を区別する値。既定値は provider 名。
--client-id <id> 必須。上流 OAuth provider の client ID。
--client-secret <secret> 上流 OAuth provider の client secret。省略時は TTY で入力を促し、非対話では必須。argv に秘密を渡さず、対話入力を使う。
--issuer <url> Generic OIDC issuer。generic_oidc では必須。
--scope <scope> 上流 OAuth scope。繰り返し指定できる。既定値は空。

成功時、provider に登録する callback URI を表示する。managed は canonical issuer、byo は environment interaction domain を使う。

verify#

environment の事前確認を実行する。--environment-id / --issuer は auth-platform.json の値で補完できる。Management API キーがない場合、API を必要とする確認は skip し、指定された public URL の確認だけを行う。

オプション 説明
--issuer <url> OIDC issuer URL。
--environment-id <id> issuer / RP domain の解決に使う environment ID。
--client-id <id> redirect URI、AASA、assetlinks 確認用 client ID。
--rp-domain <host> AASA / assetlinks 確認用 RP domain。
--custom-domain <host> TLS 証明書確認用 custom domain。
--email-domain <host> Email Sending の MX / SPF / DKIM 確認用 domain。

確認項目は issuer discovery、JWKS、redirect URI、AASA、assetlinks、custom domain TLS、Email Sending DNS、social provider callback / Generic OIDC discovery、MAU billing である。各項目は pass / fail / skip を返し、skip は失敗として数えない。fail が 1 つ以上あれば終了コード 1 となる。

verify の Management API 操作は environment / client / connection / usage の読み取りであり、すべて GET である。issuer、JWKS、AASA、assetlinks、callback の HTTP 確認も GET を使い、redirect は追跡しない。custom domain は TLS 証明書、email domain は DNS を読み取る。verify は Management API のリソースを書き換えない。

出力と終了コード#

通常は結果を人間向けの行として stdout に、失敗を stderr に出力する。--json は成功データを整形済み JSON として stdout に、コマンド実行時の失敗を {"error": ...} として stderr に出力する。引数解析で検出する構文エラーや必須オプション不足は --json の有無にかかわらず通常のテキストで stderr に出る。verify は stdout の checks 配列と failed 数を返し、失敗時はさらに stderr に型付き error を出す。

終了コード 意味
0 成功。--help / --version 表示も含む。
1 API / I/O / process / verify などの実行時失敗。
2 CLI 構文エラー、必須オプション不足などの usage error。

API 失敗は human 出力では error[api_failure] と HTTP status / error code / request ID、JSON 出力では型付き error object として表示される。Management API key と provider secret はエラー表示で redaction される。

プラットフォーム運用者向けコマンド#

以下の操作はプラットフォーム運用者向けであり、アプリの開発者は使う必要がない。dev [--app <name>] は platform repository の pnpm dev を実行し、--app を指定すると対象 package の dev script を実行する。deploy [--env <name>] は各 Worker を順に deploy する。production では各 app の production 用設定を使い、それ以外は指定した環境名を使う。AUTH_PLATFORM_REPO_ROOT は platform repository root を上書きする (既定値: 現在の作業ディレクトリ)。

verify の Cloudflare Queue / DLQ と D1 migration の確認も運用者向けである。Queue / DLQ 確認には CLOUDFLARE_ACCOUNT_ID と CLOUDFLARE_API_TOKEN が必要である。D1 確認では --migrations-dir <dir> (既定値 ./migrations) で migration root を指定し、wrangler d1 migrations list を使う。