暗黙的フロー vs. 承認コードフロー: なぜ暗黙的フローは終わったのか?
OAuth 2.0 に「承認コードフロー」があるのはなぜでしょう?すでに「暗黙的フロー」が存在するにもかかわらず...。これら 2 つの認可タイプの詳細を調べ、なぜ暗黙的フローの使用を避けるべきかを見つけましょう。
OAuth 2.0 に「承認コードフロー」があるのはなぜでしょう?すでに「暗黙的フロー」が存在するにもかかわらず...。これら 2 つの認可タイプの詳細を調べ、なぜ暗黙的フローの使用を避けるべきかを見つけましょう。
承認コードフローと暗黙的フローは、OAuth 2.0 で最も一般的に使用される認可タイプの 2 つであり、Web アプリケーションの安全で効率的なユーザー認可を可能にします。両方のフローは、ユーザーが資格情報を直接公開することなくアプリケーションにアクセスを許可するための承認プロセスを実装しています。暗黙的フローは、ブラウザの制限に対処するために最初に開発されましたが、現代の Web テクノロジーの出現により、承認コードフローが多くの開発者にとって好まれる選択肢となり、その強化されたセキュリティ機能が理由です。
この記事では、これら 2 つの承認タイプの違いを探索し、暗黙的フローの代わりに承認コードフローを使用すべき理由を説明します。
これら 2 つの承認タイプの詳細に入る前に、まず OAuth 2.0 が何であるか、そして現代の Web アプリケーションでなぜ重要であるのかを理解しましょう。
OAuth に関して人々が話すとき、通常、OAuth 2.0 のことを指します。これは「オープン認可」として知られ、Web サービスがユーザーの代わりにリソースを活用できるようにする確立されたプロトコルです。Oauth 1.0 の後継として 2012 年に登場し、それ以来デジタル認可の広く受け入れられた標準になりました。OAuth 2.0 は、ユーザーのログイン情報を明らかにすることなく、クライアントアプリケーションがユーザーのリソースを操作する特定の許可を与えるための仕組みを提供するよう設計されています。
主に Web 環境で利用されますが、OAuth 2.0 のフレームワークはさまざまなクライアント形式にも拡張されています。これにはブラウザベースのアプリケーション、サーバ側 Web アプリケーション、ネイティブまたはモバイルアプリケーション、さらには相互接続されたデバイスも含まれ、これらのプラットフォーム間で委任されたアクセスを管理する方法が詳述されています。これは「認可タイプ」の概念を導入し、クライアントアプリケーション、ユーザー、承認サーバ間の承認プロセスを定義します。これらの認可タイプは、クライアントアプリケーションがユーザーのリソースにアクセスするためのアクセストークンを取得する方法を決定するために使用されます。OAuth 2.0 で最も一般的な認可タイプは次の通りです:
暗黙的フローは、追加のステップでアクセスコードをトークンに交換することなく、リダイレクト URI で直接クライアントにアクセストークンを返す簡略化された OAuth 2.0 フローです。ブラウザの制限によってトークンエンドポイントへのサーバ側リクエストを行うことができなかった Web アプリケーション向けに当初設計されました。
暗黙的フローにはいくつかのセキュリティの脆弱性があります:
これらのセキュリティ上の懸念から、暗黙的フローは現代の Web アプリケーションにはもはや推奨されません。代わりに、PKCE(コード交換のための証明キー)を備えた承認コードフローが安全なユーザー認証のための好ましい選択肢です。
一方で、承認コードフローは、クライアントアプリケーションがまず承認サーバから承認コードを取得し、その後トークンを取得する手順を踏む、よりセキュアな OAuth 2.0 フローです。このフローは、クライアント資格情報を安全に保存しアクセストークンを管理できるサーバ側 Web アプリケーション向けに設計されました。PKCE 拡張機能の導入により、ブラウザベースのアプリケーションでも承認コードフローが使用できるようになりました。
詳細を学ぶには、PKCE フローをご覧ください。
| 側面 | 承認コードフロー | 暗黙的フロー |
|---|---|---|
| トークンの配信 | アクセストークンは安全なリクエストを介してクライアントに配信されます | アクセストークンは URL フラグメントに直接クライアントに配信されます |
| セキュリティレベル | 高 (トークンがブラウザに露出しない) | 低 (トークンがブラウザに露出する) |
| 使用ケース | サーバ側 Web アプリケーションおよびブラウザベースのアプリケーション(PKCE とともに) | ブラウザベースのアプリケーションのみ |
| 現代の使用 | あらゆるタイプのアプリケーションに推奨 | 推奨されず、避けるべき |
答えは YES です:
承認コードフローでは、承認コードをアクセストークンに交換する追加のステップが導入され、トークンの露出リスクが大幅に軽減されます。
現在ビジネスで暗黙的フローを使用している場合、PKCE を使用した承認コードフローへの切り替えにより、あなたとユーザーの両方のセキュリティが向上します。移行や ID システムの管理は面倒で費用がかさむ可能性があると理解していますが、セキュリティの向上とコンプライアンスのメリットは大いに価値があるでしょう。