Skip to content

TeamKOTOCA/USSP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

USSP

📄 企画書 — USSP(Universal Structured Storage Protocol)OSS プラットフォーム

1. プロジェクト名

USSP — 分散対応ストレージ基盤 + 認証SDK構築プロジェクト


2. 背景と課題

現代Webサービスでは、

  • バックエンドを持たないSPA や JAMstack アプリの増加
  • 各サービスごとにストレージ基盤の実装負荷
  • OAuth や API 認可の実装複雑度の高さ

といった問題がある。

また、

  • ストレージの分散化や選択肢(ローカル/S3/R2/Drive 等)への対応
  • 認証・権限管理をサービスごとに作り直すコスト

が開発のボトルネックになっている。

上記を解決するために、OSSベースで誰でも立てられる汎用認証+ストレージ基盤 を構築する。SDK付きで他サービスから簡単に統合可能とする。


3. 目的

中心となる目的は以下:

  1. OSS ストレージサーバー を提供し、誰でも柔軟に立てられる基盤を作る
  2. 分散バックエンド対応 により、保存先を選べるようにする
  3. OAuth 認証基盤を内包 し、認可を標準化する
  4. SDK を提供 して統合を簡易化する
  5. Google Drive 等外部ストレージとのプラグイン対応による可搬性向上

4. ソリューション概要

基本機能

機能 内容
マルチバックエンド対応 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

5. 技術アーキテクチャ

  +-----------------------+
  |      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 を通じて安全にアクセス

6. OAuth 認証基盤について

  • OAuth 2.0 を自前で実装し、API 認可を標準化する
  • 認可サーバー → Token Endpoint → JWT 発行
  • JWT は namespace と client_scopes を含み アクセスポリシーを厳格化
  • PKCE を必須とし SPA の安全性を確保(公開クライアントに対応)

OAuth は業界標準のAPI認可方式であり、サービス連携に不可欠である点が重要。([株式会社Prazto(プラート)][1])


7. ストレージバックエンド戦略

Adapter 基盤

ストレージはアダプターとして抽象化:

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)

8. SDK (JavaScript)

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 は最小限の依存で安全に扱えるようにする。


9. 管理UI

最低限の UI 機能:

  • サーバー Storage Adapter 設定画面(Local/S3/R2/Drive など)
  • OAuth クライアント登録・管理
  • Namespace・Storage Policy 設定
  • 使用状況・クォータ表示

10. 進行計画 / マイルストーン

以下の順番で進める:

  1. 設計フェーズ

    • ストレージ抽象化インターフェース設計
    • OAuth 認可サーバー仕様確定
  2. コア実装

    • USSP Server ベース
    • Local / S3Adapter
    • OAuth 基盤
  3. SDK 実装

    • JavaScript SDK + PKCE 自動実装
  4. 管理UI 実装

    • Adapter 設定 / クライアント管理
  5. バックアップ / Drive Adapter

    • 非同期バックアップ
    • Drive プラグイン追加
  6. OSS 公開 + ドキュメント整備

    • README + チュートリアル設計

11. リスクと対策

リスク 対策
認証実装の複雑さ OAuth 2.0 標準に準拠させ、PKCE で安全性確保
外部ストレージの API 依存 Adapter で抽象化
最初の UX が難しい 管理UI 完全整備

12. 期待効果

  • Web サービス開発者がバックエンド無しでも安全なストレージ利用可能
  • 各サービスは「SDK 1行」で実装可能
  • ストレージバックエンドを自由に選べる柔軟性
  • OAuth を標準で提供し、セキュアな外部連携が容易になる

実際にSDKからファイルをアップロード・ダウンロードするためのエンドポイント処理(S3互換・ローカル等への実保存ロジック)や、バックアップキューの実装等に進む。管理者アカウントも作って、新規ユーザーの追加などの機能を組み込んで。UIはモダンであるのはいいが、重いのはだめ。 また、AI使用ユーザー向けのSDK組み込みドキュメントやユーザー向けのドキュメントを追加して。

Releases

No releases published

Packages

 
 
 

Contributors

Languages