Form Post を使用する Implicit Flow の仕組みと、ユーザー認証に ID トークンだけが必要な従来型の Web アプリでこれを使うべき理由を学びます。
「implicit」という名称に惑わされないでください。OAuth では現在、SPA でアクセストークンを取得するための Implicit grant の使用は推奨されていませんが、Form Post を使用する Implicit Flow が対象とするシナリオはそれとはまったく異なり、SPA での利用が非推奨になった原因であるセキュリティ上の問題の影響を受けません。具体的には、Form Post を使用する Implicit Flow は SPA ではなく従来型の Web アプリに適用されます。取得するのはアクセストークンではなく ID トークンであり、その用途もまったく異なります。また、このフローではトークンを URL フラグメントに含める方式 (SPA の場合) ではなく POST を使用するため、ブラウザー履歴への攻撃やリダイレクトヘッダーなどを通じてトークンの一部が露出するリスクを避けられます。
従来型の Web アプリでのサインインは、 Connect (OIDC) のさまざまなフローを使って実現できます。一般的なフローの 1 つでは、アプリのバックエンドで実行される認可コードフローを使って を取得します。この方法は効果的で堅牢ですが、Web アプリでシークレットを取得して管理する必要があります。必要なのがサインインの実装だけで、API を呼び出すための を取得する必要がないのであれば、その負担は避けられます。Form Post を使用する Implicit Flow では、 や WS-Federation と非常によく似た方法で、OIDC を使って Web サインインを実装します。Web アプリはシークレットや追加のバックエンド呼び出しを必要とせず、フロントチャネル経由でトークンを要求し、取得できます。この方法であれば、アプリケーション内でシークレットを取得、維持、使用、保護する必要はありません。