Accountsは、mochiOSのAccount認証を担当する独立サービスです。Rustと
workers-rsで実装し、Cloudflare WorkersとD1上で動作します。
- GitHub OAuthログインとOAuth
state検証 - UUIDv7によるAccount、外部Identity、Session、監査ログの識別
- GitHub numeric IDを安定した外部識別子として使用
- 256 bitのopaque session tokenとSHA-256ハッシュ保存
- Accountの停止、論理削除、Session失効
- DeveloperCA向けSession introspectionとAccount状態取得
- Console向けの120秒・一回限り認可コード引き渡し
- 追記専用の認証監査ログ
- GitHubログイン、プロフィール変更、Session失効を行うWebフロントエンド
Developer、Certificate、App、Release、Package、MPKG、アップロード、Object StorageはAccountsの責務ではありません。
rustup target add wasm32-unknown-unknown
cargo install worker-build
npx wrangler d1 migrations apply mochios-accounts --local
npx wrangler devpublic/はWorkers Static Assetsとして同じWorkerから配信されます。/v1/*と
/healthはRust Workerを先に実行し、それ以外はフロントエンドへルーティングします。
.dev.varsへ次のsecretを設定してください。実値はコミットしないでください。
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
SERVICE_TOKEN=<DeveloperCAと共有する独立したランダム値>
CONSOLE_SERVICE_TOKEN=<Consoleとの認可コード交換専用の独立したランダム値>
検証コマンド:
cargo test --lib
cargo clippy --target wasm32-unknown-unknown -- -D warnings