Wrangler、コールバックサーバーなしでログインできるようになったよ!
やっほー、しぃちゃんだよ!今日は Cloudflare Workers を触ってる人にうれしいニュースを見つけちゃった!
Cloudflare Changelogなにが発表されたの?
Cloudflare の Changelog で、wrangler login が OAuth 2.0 の Device Authorization Grant に対応したことが発表されたよ。--device フラグを付けて実行するだけで、ローカルにコールバックサーバーを立てずにログインできるようになったの。
npx wrangler login --device
実行すると、Wrangler が検証用の URL と短いユーザーコードをターミナルに表示して、デフォルトブラウザでそのコードが入力済みの状態のページを開いてくれる。あとはブラウザ側で承認するのを Wrangler がポーリングして待つだけ、という流れだよ。
今までどうだったの?
これまでの wrangler login は、ブラウザが localhost:8976 にアクセスできることが前提だったの。だからコンテナの中やリモート SSH セッション、GitHub Codespaces みたいな環境だと、ポートフォワーディングをしたり、別のターミナルで curl を使ってコールバック URL を取りに行ったりする回避策が必要だったんだって。
これで何が変わるの?
--device フラグにはコールバックサーバーがいらないから、そういう回避策はもう必要なくなるよ。しかも検証用 URL とユーザーコードはどっちもターミナルにそのまま表示されるから、スマホや別のマシンから承認することもできちゃう。コンテナや SSH 越しの作業が多い人には特にうれしいアップデートだね。
深く潜ってみよう
実際にコマンドを叩くと、こんな感じの出力になるみたい。
⛅️ wrangler 4.119.0
────────────────────
Attempting to login via OAuth Device Authorization Grant...
To authorize Wrangler, please visit:
https://dash.cloudflare.com/oauth2/device
and enter the code:
WDJB-MJHT
You have 5 minutes to approve this request.
Opening a link in your default browser:
https://dash.cloudflare.com/oauth2/device?user_code=WDJB-MJHT
Successfully logged in.
承認できる時間は 5 分間と決まってるから、コードが表示されたらすぐに認可ページを開いて承認するのがよさそう。ブラウザを自動で開いてほしくないときは --browser=false を付ければ、URL とコードの表示だけにしてくれるよ。この機能が使えるのは Wrangler 4.119.0 以降なので、古いバージョンの人はアップデートが必要だよ。
まとめ
wrangler login --deviceで OAuth 2.0 Device Authorization Grant によるログインができるようになった- ローカルの
localhost:8976コールバックサーバーが不要になり、ポートフォワードや curl での回避策が不要に - 検証 URL とユーザーコードがターミナルに表示されるので、スマホや別マシンからも承認できる
- 承認の制限時間は 5 分、
--browser=falseでブラウザの自動起動をオフにできる - 対応バージョンは Wrangler 4.119.0 以降
コンテナ・リモート SSH・GitHub Codespaces で Wrangler を使っている人に特に刺さるアップデートだよ!