2.4. OpenID Connect、SmallRye JWT、OAuth2 認証メカニズムの選択


次の情報を参考にして、Quarkus アプリケーションを保護するための適切なトークン認証メカニズムを選択します。

認証メカニズムのユースケースリスト

  • quarkus-oidc には、ベアラートークンの検証と、認可コードフローでのエンドユーザーの認証が可能な Keycloak などの OpenID Connect プロバイダーが必要です。いずれの場合も、quarkus-oidc には指定された OpenID Connect プロバイダーへの接続が必要です。
  • ユーザー認証に認可コードフローが必要な場合、または複数のテナントをサポートする必要がある場合は、quarkus-oidc を使用します。quarkus-oidc は、認可コードフローとベアラーアクセストークンの両方を使用してユーザー情報を要求することもできます。
  • ベアラートークンを検証する必要がある場合は、quarkus-oidc または quarkus-smallrye-jwt を使用します。
  • ベアラートークンが JSON Web トークン (JWT) 形式の場合は、前述のリストから任意のエクステンションを使用できます。quarkus-oidcquarkus-smallrye-jwt はどちらも、OpenID Connect プロバイダーがキーをローテーションするときに JsonWebKey (JWK) セットの更新をサポートします。したがって、リモートトークンのイントロスペクションを回避する必要がある、またはそれがプロバイダーによってサポートされていない場合は、quarkus-oidc または quarkus-smallrye-jwt を使用して JWT トークンを検証します。
  • JWT トークンをリモートでイントロスペクトするには、リモートイントロスペクションを使用することで、不透明トークンまたはバイナリートークンの検証に quarkus-oidc を使用できます。quarkus-smallrye-jwt は、不透明トークンと JWT トークンの両方のリモートイントロスペクションをサポートしていません。代わりに、通常は OpenID Connect プロバイダーから取得されるローカルで利用可能なキーに依存しています。
  • quarkus-oidcquarkus-smallrye-jwt は、エンドポイントコードへの JWT と不透明トークンの注入をサポートします。注入された JWT トークンは、ユーザーに関する詳細情報を提供します。すべてのエクステンションには、Principal として注入されたトークンを含めることができます。
  • quarkus-smallrye-jwt は、quarkus-oidc よりも多くのキー形式をサポートしています。quarkus-oidc は、JWK セットの一部である JWK 形式のキーのみを使用しますが、quarkus-smallrye-jwt は PEM キーをサポートします。
  • quarkus-smallrye-jwt は、ローカルで署名されたトークン、内部で署名および暗号化されたトークン、および暗号化されたトークンを処理します。一方で、quarkus-oidc もこれらのトークンを検証できますが、不透明トークンとして扱い、リモートイントロスペクションを通じて検証します。
注記

アーキテクチャーを考慮して、不透明トークン形式または JSON Web トークン (JWT) 形式のどちらを使用するかが決定されます。不透明トークンは JWT トークンよりもはるかに短くなる傾向がありますが、トークンに関連付けられた状態のほとんどをプロバイダーデータベースで維持する必要があります。実質的に、不透明トークンはデータベースポインターです。

JWT トークンは不透明トークンよりも大幅に長くなります。その場合もプロバイダーは、トークンクレームとしてトークン関連の状態を保存し、それに署名するか暗号化することで、トークン関連の状態の大部分をクライアントに委譲します。

表2.2 トークン認証メカニズムの比較
必要な機能認証メカニズム
 

quarkus-oidc

quarkus-smallrye-jwt

ベアラー JWT 検証

ローカル検証またはイントロスペクション

ローカル検証

ベアラー不透明トークン検証

イントロスペクション

いいえ

JWT トークン検証用に JsonWebKey セットを更新する

はい

はい

トークンを Principal として表す

はい

はい

JWT を MP JWT として注入する

はい

はい

認可コードフロー

はい

いいえ

マルチテナンシー

はい

いいえ

ユーザー情報のサポート

はい

いいえ

PEM キー形式のサポート

いいえ

はい

SecretKey のサポート

いいえ

JSON Web Key (JWK) 形式

内部署名および暗号化されたトークン、または暗号化されたトークン

イントロスペクション

ローカル検証

カスタムトークン検証

いいえ

注入された JWT パーサーを使用

Cookie としての JWT をサポートする

いいえ

はい

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.