USSP — 分散対応ストレージ基盤 + 認証SDK構築プロジェクト
現代Webサービスでは、
- バックエンドを持たないSPA や JAMstack アプリの増加
- 各サービスごとにストレージ基盤の実装負荷
- OAuth や API 認可の実装複雑度の高さ
といった問題がある。
また、
- ストレージの分散化や選択肢(ローカル/S3/R2/Drive 等)への対応
- 認証・権限管理をサービスごとに作り直すコスト
が開発のボトルネックになっている。
上記を解決するために、OSSベースで誰でも立てられる汎用認証+ストレージ基盤 を構築する。SDK付きで他サービスから簡単に統合可能とする。
中心となる目的は以下:
- OSS ストレージサーバー を提供し、誰でも柔軟に立てられる基盤を作る
- 分散バックエンド対応 により、保存先を選べるようにする
- OAuth 認証基盤を内包 し、認可を標準化する
- SDK を提供 して統合を簡易化する
- Google Drive 等外部ストレージとのプラグイン対応による可搬性向上
| 機能 | 内容 |
|---|---|
| マルチバックエンド対応 | Local / S3 / MinIO / Cloudflare R2 / Google Drive など |
| OAuth2.0 認証基盤 | Authorization Code + PKCE 対応 |
| API 認可管理 | namespace × client スコープ |
| バックアップ機能 | 非同期バックアップキュー |
| Web 管理UI | ストレージ選択・クライアント管理 |
| SDK(JavaScript) | USSP.config.url() で接続先設定可能 |
| 並列変更耐性 | ETag/optimistic lock |
+-----------------------+
| Web Client | <- SPA/Third-party
| (USSP SDK: JS) |
+-----------+-----------+
|
OAuth + API calls
|
+-----------v-----------+
| USSP Server | <- Node.js (OSS)
| Authn/Z + API Logic |
| Storage Adapter LAYER|
+------+----+----+------+
| | | |
Local S3 R2 Drive Adapter
- Storage Adapter Layer により保存先を動的に切り替え可能(WebUIで設定)
- 認証は OAuth/OIDC 準拠(Authorization Code + PKCE)
- クライアントは SDK を通じて安全にアクセス
- OAuth 2.0 を自前で実装し、API 認可を標準化する
- 認可サーバー → Token Endpoint → JWT 発行
- JWT は namespace と client_scopes を含み アクセスポリシーを厳格化
- PKCE を必須とし SPA の安全性を確保(公開クライアントに対応)
OAuth は業界標準のAPI認可方式であり、サービス連携に不可欠である点が重要。([株式会社Prazto(プラート)][1])
ストレージはアダプターとして抽象化:
interface StorageAdapter {
init(config: any)
put(path, stream)
get(path)
delete(path)
stat(path)
}- Local: ローカルディスク保存
- S3Compatible: S3/R2/MinIO
- Google Drive: API 経由
- その他追加プラグイン対応可能
設定は管理UIから動的に行えるようにする。
- イベント登録 → Queue → Worker 非同期コピー
- バックアップターゲットも複数選択可能(例: Primary → S3, Backup → Drive)
SDK の役割:
- OAuth フローの開始と token 保持
- API 呼び出しラッパー
- 接続先切り替え (
USSP.config.url("...")) が可能
サンプル利用法:
USSP.config.url("https://storage.example.com")
await USSP.init({ clientId: "appId" })
await USSP.upload("memo.txt", blob)SDK は最小限の依存で安全に扱えるようにする。
最低限の UI 機能:
- サーバー Storage Adapter 設定画面(Local/S3/R2/Drive など)
- OAuth クライアント登録・管理
- Namespace・Storage Policy 設定
- 使用状況・クォータ表示
以下の順番で進める:
-
設計フェーズ
- ストレージ抽象化インターフェース設計
- OAuth 認可サーバー仕様確定
-
コア実装
- USSP Server ベース
- Local / S3Adapter
- OAuth 基盤
-
SDK 実装
- JavaScript SDK + PKCE 自動実装
-
管理UI 実装
- Adapter 設定 / クライアント管理
-
バックアップ / Drive Adapter
- 非同期バックアップ
- Drive プラグイン追加
-
OSS 公開 + ドキュメント整備
- README + チュートリアル設計
| リスク | 対策 |
|---|---|
| 認証実装の複雑さ | OAuth 2.0 標準に準拠させ、PKCE で安全性確保 |
| 外部ストレージの API 依存 | Adapter で抽象化 |
| 最初の UX が難しい | 管理UI 完全整備 |
- Web サービス開発者がバックエンド無しでも安全なストレージ利用可能
- 各サービスは「SDK 1行」で実装可能
- ストレージバックエンドを自由に選べる柔軟性
- OAuth を標準で提供し、セキュアな外部連携が容易になる
実際にSDKからファイルをアップロード・ダウンロードするためのエンドポイント処理(S3互換・ローカル等への実保存ロジック)や、バックアップキューの実装等に進む。管理者アカウントも作って、新規ユーザーの追加などの機能を組み込んで。UIはモダンであるのはいいが、重いのはだめ。 また、AI使用ユーザー向けのSDK組み込みドキュメントやユーザー向けのドキュメントを追加して。