CloudflareはOAuthスコープのカスタマイズ機能を追加したと発表した。この機能により、サードパーティーOAuthアプリの所有者は、必須の権限と任意の権限を指定できる。これによりユーザーは同意画面で任意の権限を解除し、要求されたすべての権限を承認するかリクエスト全体を拒否するかの二択ではなく、より限定されたアクセス権をアプリに付与できる。
この動きは、6月以降に開発者がCloudflare上で数千のサードパーティーOAuthアプリを作成し、それ以来100万件を超える認可が記録されたことを受けたものだ。これらのアプリは、サービスとしてのソフトウェア(SaaS)統合、内部ツール、コマンドラインインターフェース、ソフトウェアエージェントで利用されている。
包括的な同意からタスクに即した権限へ
Cloudflare OAuthではこれまで、アプリが設定済みスコープの一部を要求することはできたが、ユーザーは同意画面自体でその集合を縮小できなかった。アプリがユーザーにとって適切だと思われる以上の権限を要求した場合、ユーザーにできるのはリクエスト全体を承認するか、拒否することだけだった。
Cloudflareは、MCPサーバーがこの問題の明確なユースケースだと説明している。MCPサーバーは、エージェントが理論上すべての権限を必要とする可能性があるため、広範な権限を要求することがある一方、ユーザーは必ずしもエージェントにこのレベルのアクセスを与えたいとは限らない。この機能のリリース前は、ユーザーをCloudflareの同意フローへ移行する前に、スコープを選択するカスタム画面を開発者が構築する必要があった。
任意スコープはどのように機能するのか?
- 開発者はOAuthクライアントの設定時に、特定のスコープを必須または任意として指定できる。
- ユーザーは、現在の認可プロセスで要求された権限の集合に含まれる任意スコープの選択を解除できる。
- クライアントが任意スコープを有効にしていない場合、デフォルトの体験は変わらない。また、任意スコープを一つも解除しなければ、同意画面には要求された集合全体が提示される。
重要なのは、評価がクライアントに設定されたすべてのスコープではなく、特定の認可フローでアプリが要求したスコープに基づいて行われる点だ。たとえばクライアントにuser-details.read、workers-scripts.write、workers-kv-storage.write、zone.readが含まれ、後者2つが任意として設定されている場合、4つのスコープを要求すると、ユーザーは後者2つだけを解除できる。
一方、クライアントが後からworkers-scripts.writeとzone.readだけを要求した場合、そのプロセスではこの2つのスコープだけが評価される。他のスコープは現在のリクエストに含まれていないため、表示も強制もされない。これにより、アプリが将来要求できるすべての機能を表示するのではなく、必要なタスクに同意画面を集中させられる。
開発者にとって実際に何が変わるのか?
ユーザーが一部の任意スコープを解除して認可を完了すると、生成されたアクセストークンにはユーザーが承認した権限だけが含まれる。そのため開発者は、アプリが要求された集合全体を取得したと仮定するのではなく、認可コードを交換した後に付与されたスコープの集合を確認する必要がある。
これは、アプリ、特にソフトウェアエージェントが、権限の部分的な付与を円滑に処理する必要があることを意味する。また、必要最小限のアクセスを要求し、追加の権限を任意にすることは、アプリがアクセス範囲に関するユーザーの判断を尊重していることを明確に示す。
Cloudflare製品への拡大
Cloudflareは、今後数週間でアカウントレベルおよびゾーンレベルのロールスコープを拡大し、ほぼすべての製品をカバーすると述べた。これには、APIトークンのロール、アカウントメンバーシップのオプション、OAuthスコープのさらなる追加が含まれる。開発者はThird Party OAuthのドキュメントまたはダッシュボードのOAuthアプリページから利用を開始できる。
同社は、この機能が1,111人のインターンの支援を受けて開発されたと述べ、Miller VargasとJosé Enrique Rodriguezの貢献を称賛した。記事によると、VargasはUniversity of Texas - Austinでコンピューターサイエンスと数学を学び、RodriguezはUniversidad Panamericanaで工学、データインテリジェンス、サイバーセキュリティを学んでいる。