第3章 Web アプリケーションを保護するための OpenID Connect 認可コードフローメカニズム
Web アプリケーションを保護するには、Quarkus OIDC エクステンションによって提供される業界標準の OpenID Connect (OIDC) 認可コードフローメカニズムを使用できます。
3.1. OIDC 認可コードフローメカニズムの概要
Quarkus OpenID Connect (OIDC) エクステンションは、Keycloak などの OIDC 準拠の認可サーバーによってサポートされている OIDC 認可コードフローメカニズムを使用して、アプリケーションの HTTP エンドポイントを保護できます。
認可コードフローメカニズムは、Web アプリケーションのユーザーを Keycloak などの OIDC プロバイダーにリダイレクトしてログインさせることで、ユーザーを認証します。認証後、OIDC プロバイダーは、認証が成功したことを確認する認可コードを使用してユーザーをアプリケーションにリダイレクトします。次に、アプリケーションは、このコードを OIDC プロバイダーと交換して、ID トークン (認証されたユーザーを表す)、アクセストークン、および更新トークンを取得し、ユーザーのアプリケーションへのアクセスを認可します。
次の図は、Quarkus の認可コードフローのメカニズムの概要を示しています。
図3.1 Quarkus の認可コードフローメカニズム
-
Quarkus ユーザーは、Quarkus
web-app
アプリケーションへのアクセスを要求します。 - Quarkus web-app は、ユーザーを認可エンドポイント、つまり認証用の OIDC プロバイダーにリダイレクトします。
- OIDC プロバイダーは、ユーザーをログインおよび認証プロンプトにリダイレクトします。
- ユーザーは、プロンプトが表示されたらユーザー認証情報を入力します。
- OIDC プロバイダーは、入力されたユーザー認証情報を認証し、成功した場合は認可コードを発行して、クエリーパラメーターとして含まれたコードを使用してユーザーを Quarkus web-app にリダイレクトします。
- Quarkus web-app は、この認可コードを OIDC プロバイダーと交換して、ID、アクセストークン、および更新トークンを取得します。
認可コードフローが完了し、Quarkus web-app は発行されたトークンを使用してユーザーに関する情報にアクセスし、そのユーザーに関連するロールベースの認可を付与します。以下のトークンが発行されます。
-
ID トークン: Quarkus
web-app
アプリケーションは、ID トークン内のユーザー情報を使用することで、認証されたユーザーが安全にログインし、Web アプリケーションへのロールベースのアクセスを提供できるようにします。 - アクセストークン: Quarkus web-app は、アクセストークンを使用して UserInfo API にアクセスし、認証されたユーザーに関する追加情報を取得したり、それを別のエンドポイントに伝播したりする可能性があります。
- 更新トークン: (オプション) ID とアクセストークンの有効期限が切れた場合、Quarkus web-app は更新トークンを使用して、新しい ID とアクセストークンを取得できます。
Quarkus ガイド OIDC 設定プロパティー も参照してください。
OIDC 認可コードフローメカニズムを使用して Web アプリケーションを保護する方法の詳細は、OIDC 認可コードフローを使用した Web アプリケーションの保護 を参照してください。
OIDC ベアラートークン認証を使用してサービスアプリケーションを保護する場合は、OIDC ベアラートークン認証 を参照してください。
複数のテナントをサポートする方法の詳細は、OpenID Connect マルチテナンシーの使用 を参照してください。