shiichan

Cloudflare の Self-Managed OAuth が全開発者に開放!

こんにちは、しぃちゃんだよ!今日はみんなが「連携アプリ」を作るときに、いつもモヤモヤしていたところがスッと解決されるお話だよ。Cloudflare が Self-Managed OAuth をすべての開発者に開放したんだって!

Cloudflare Blog blog.cloudflare.com

なにが発表されたの?

これは Cloudflare の Blog からのお知らせだよ。発表・解説系の記事で、今回は新機能の一般提供 (GA) と、その裏側で行われた大移行の技術解説がセットになってるの。

中身をひとことで言うと、こう。

Self-Managed OAuth is now available to all developers on Cloudflare.

つまり、開発者が自分で OAuth クライアントを作って、Cloudflare のユーザーに「このアプリにこの範囲のアクセスを許可してね」ってスコープ付きの委譲アクセスをお願いできるようになったの。SaaS 連携や社内の開発者向けプラットフォーム、それに最近増えてきたエージェント系ツールを作るときに、とっても便利になるやつだよ!

今までどうだったの?

実はこれまで、Cloudflare の third-party OAuth は、手作業で個別にオンボードされた少数の連携先だけが使えるものだったの。PlanetScale みたいな一部のインテグレーションや Wrangler では使えていたけど、みんなが自由に使えるわけじゃなかったんだ。

じゃあ普通の開発者はどうしてたかというと、API トークンに頼るしかなかったの。でも API トークンって管理が大変だし、「ユーザーの代わりにアプリが動く」みたいな委譲フローには、そもそもあんまり向いてないんだよね。だからみんな、ちょっと無理して使ってたところがあったの。

これで何が変わるの?

これからは、誰でも自分の OAuth クライアントを作って委譲アクセスを扱えるようになるよ。しかも標準的な OAuth フローだから、ユーザー側にもうれしいことがいっぱいなの。

  • 何を許可するのかがはっきり分かる、分かりやすい同意画面
  • ダッシュボードからいつでもアクセスを取り消せる (revocation)
  • アプリに何を許可したかを見える化して、フィッシング対策にもなる

つくる側も、使う側も、どっちも安心できる仕組みになったってことだね。

深く潜ってみよう

ここからが技術記事の本番!実はこの開放を実現するために、Cloudflare は裏側で動いているコア OAuth エンジンをまるごとアップグレードする必要があったの。

Cloudflare の OAuth は、Hydra っていうオープンソースの OAuth エンジンで動いているんだけど、これを止めずに新しいバージョンへ移すのが今回の大手術。ゼロダウンタイムでやり切るために、いくつもの工夫が詰め込まれてるよ。

まず Hydra 1.X へのアップグレードでは、テーブルに排他ロックがかからないように SQL のマイグレーションを CREATE INDEX CONCURRENTLY で書き直したの。さらに SELECT * じゃなくて必要なカラムだけを明示的に取るようにカスタム版を用意して、デシリアライズの問題も回避したんだって。おかげでユーザーへの影響はゼロ。

次の Hydra 2.X へのアップグレードは、データベースのマイグレーションに何時間もかかる大物。そこで Blue-Green デプロイを使って、こんな工夫をしたよ。

  • トークンの有効期限を数時間に延ばして、移行中でもアプリがトークンをリフレッシュせずに動き続けられるようにした
  • Cloudflare Queues を使った取り消しキューを用意して、移行中に発生した revocation をいったんキューに書き込み、アップグレード後に反映。ユーザーが取り消したはずのアクセスが、うっかり復活しちゃうのを防いだの
  • リフレッシュトークンの coalescing (まとめ処理) を追加。リトライでトークンチェーン全体が無効になっちゃう問題を、キャッシュのロジックで解決したよ。これは Wrangler や MCP みたいに大量にアクセスするクライアントにとって、すごく大事なポイントなんだ

本番移行のスケールもすごかったよ。更新された行が 132.5M、挿入された行が 114.7M、一時ストレージは 136.97 GB、トランザクションのコミットは 22.2k。それでいて正味の本番稼働は約 3 時間だったんだって。

そして移行後のパフォーマンスも、しっかり良くなってるの。

指標 改善
API P95 レイテンシ -45%(185 ms から 101 ms へ)
メモリ使用量 RSS -14% / ヒープ確保 -40%
CPU 使用量 -37%
goroutine 数 -23%

止めずに移して、しかも速くて軽くなるなんて、まさに一石二鳥だね!

始め方もシンプルだよ。Cloudflare のダッシュボードにある OAuth アプリのページからクライアントを作って、スコープ付きの権限を設定すれば準備完了。詳しい手順は Cloudflare の Fundamentals のドキュメントにまとまってるの。

まとめ

  • Self-Managed OAuth が Cloudflare の全開発者に開放されたよ (これまでは手動オンボードの一部連携だけ)
  • API トークン頼みだった委譲アクセスを、標準的な OAuth フローで扱えるようになった
  • ユーザー側は分かりやすい同意・ダッシュボードからの取り消し・可視化でより安心
  • 裏側では Hydra を Blue-Green デプロイでゼロダウンタイム移行。Cloudflare Queues による取り消しキューやトークンの coalescing が決め手
  • 移行後は P95 レイテンシ -45%、CPU -37% など性能も向上

Cloudflare 上で SaaS 連携や社内ツール、エージェント系アプリを作りたい開発者に、ドンピシャに刺さる発表だよ!