アノテーションインターフェース OpenIdAuthenticationMechanismDefinition


@TargetSE({TYPESE,METHODSE}) @RetentionSE(RUNTIMESE) @RepeatableSE(List.class) public @interface OpenIdAuthenticationMechanismDefinition
OpenId Connect 仕様で定義されている認証コードフローとリフレッシュトークンを実装するコンテナー認証メカニズムを定義し、その実装を有効な CDI Bean として利用できるようにするために使用されるアノテーション。

このアノテーションの属性は、OpenID 接続クライアント構成を構成します。型 String の属性の Expression Language 式が評価されます。

ユーザーに関するクレームを取得するために、ユーザーエンドポイントを利用できます。

OpenID 用語では、認証メカニズムは「エンドユーザー」(呼び出し元) を「OpenId 接続プロバイダー」(アイデンティティープロバイダー) にリダイレクトする「依拠当事者」(RP) になることに注意してください。認証はユーザーと ID プロバイダーの間で行われ、この認証の結果が認証メカニズムに戻されます。

これは、次の非規範的な図に示されています。

  +--------+                                                       +--------+
  |        |                                                       |        |
  |        |---------------(1) Authentication Request------------->|        |
  |        |                                                       |        |
  |        |       +--------+                                      |        |
  |        |       |  End-  |<--(2) Authenticates the End-User---->|        |
  |   RP   |       |  User  |                                      |   OP   |
  |        |       +--------+                                      |        |
  |        |                                                       |        |
  |        |<---------(3) Returns Authorization code---------------|        |
  |        |                                                       |        |
  |        |---------(3b)                                          |        |
  |        |           | Redirect to original resource (if any)    |        |
  |        |<----------+                                           |        |
  |        |                                                       |        |
  |        |------------------------------------------------------>|        |
  |        |   (4) Request to TokenEndpoint for Access / Id Token  |        |
  | OpenId |<------------------------------------------------------| OpenId |
  | Connect|                                                       | Connect|
  | Client | ----------------------------------------------------->|Provider|
  |        |   (5) Fetch JWKS to validate ID Token                 |        |
  |        |<------------------------------------------------------|        |
  |        |                                                       |        |
  |        |------------------------------------------------------>|        |
  |        |   (6) Request to UserInfoEndpoint for End-User Claims |        |
  |        |<------------------------------------------------------|        |
  |        |                                                       |        |
  +--------+                                                       +--------+
 

この認証メカニズムとプロトコルの仕組みにより、ID ストアを明示的に定義する必要はありません。ただし、認証メカニズムは、IdentityStoreHandler を呼び出して、"TokenEndpoint" から受け取ったトークンを検証する必要があります。これにより、追加の ID ストアやカスタム IdentityStoreHandler を最終的な認証結果に参加させることができます (例: 追加のグループを追加する)。

作成者:
Gaurav Gupta, Rudy De Busscher
  • 要素の詳細

    • providerURI

      StringSE providerURI
      providerMetadata が指定されていない限り必須です。OpenID プロバイダーのメタデータを読み取り / 検出するためのプロバイダー URI。
      戻り値:
      メタデータを読み取るプロバイダ URI
      デフォルト:
      ""
    • providerMetadata

      OpenIdProviderMetadata providerMetadata
      providerUri 経由で検出された OpenID Connect プロバイダーのメタデータプロパティをオーバーライドします。
      戻り値:
      OpenIdProviderMetadata インスタンス。
      デフォルト:
      @jakarta.security.enterprise.authentication.mechanism.http.openid.OpenIdProviderMetadata
    • clientId

      StringSE clientId
      必須。アプリケーションが登録されたときに発行されたクライアント識別子。
      戻り値:
      クライアント識別子
      デフォルト:
      ""
    • clientSecret

      StringSE clientSecret
      必須。クライアントシークレット。

      コード内で値がハードコードされないように、式を使用してこれを設定することを強くお勧めします。

      戻り値:
      クライアントシークレット
      デフォルト:
      ""
    • claimsDefinition

      ClaimsDefinition claimsDefinition
      オプション。クレーム定義は、呼び出し元名とグループのカスタムクレームマッピングを定義します。
      戻り値:
      デフォルト:
      @jakarta.security.enterprise.authentication.mechanism.http.openid.ClaimsDefinition
    • logout

      オプション。ログアウト定義は、ログアウトおよび中継側セッション管理構成を定義します。
      戻り値:
      デフォルト:
      @jakarta.security.enterprise.authentication.mechanism.http.openid.LogoutDefinition
    • redirectURI

      StringSE redirectURI
      OpenId Connect プロバイダーによってレスポンスが送信されるリダイレクト URI (コールバック URI)。この URI は絶対的である必要があり、OpenID プロバイダーに事前登録されているクライアントのリダイレクト URI 値の 1 つと正確に一致する必要があります。

      値には、暗黙の文字列変数 baseURL を含めることができる Jakarta Expression Language 3.0 式を指定できます。この変数には、OpenID Connect 認証メカニズムがインストールされているアプリケーションのホストおよびコンテキストパスが含まれています。この変数を使用すると、OpenID Connect 仕様で要求されている絶対 URL を簡単に作成できます。

      例:

      • redirectURI = "${baseURL}/Callback" - `baseURL` 変数と "/Callback" 文字列を複合式で連結します。
      • redirectURI = "${baseURL += oidcConfig.redirectCallback}" - `baseURL` 変数と Bean の `redirectCallback` プロパティ `oidcConfig` を 1 つの式で連結します
      • redirectURI = "${baseURL}#{oidcConfig.redirectCallback}" - `baseURL` 変数と Bean `oidcConfig` の `redirectCallback` プロパティを複合式で連結します。`redirectCallback` プロパティは、各リクエスト中に遅延式として評価されます。
      戻り値:
      デフォルト:
      "${baseURL}/Callback"
    • redirectToOriginalResource

      boolean redirectToOriginalResource
      オプション。呼び出し元 (エンドユーザー) を、redirectURI 属性によって定義されたリダイレクト URI から、「ログインして続行」シナリオでエンドユーザーが最初にリクエストしたリソースに自動的にリダイレクトします。

      元のリクエストされたリソースに到達した後、ランタイムは、LoginToContinue 機能を使用した場合と同じ方法で、cookie、ヘッダー、リクエストメソッド、リクエストパラメーターを含めて、リクエストを元の状態に復元します。

      戻り値:
      デフォルト:
      false
    • redirectToOriginalResourceExpression

      StringSE redirectToOriginalResourceExpression
      オプション。redirectToOriginalResource を Jakarta Expression Language 式として指定できるようにします。設定されている場合、redirectToOriginalResource 値によって定義された値をオーバーライドします。
      戻り値:
      デフォルト:
      ""
    • scope

      StringSE[] scope
      オプション。スコープ値は、アクセス権限を定義します。OpenID Connect の基本的な (そして必須の) スコープは、openid スコープです。
      戻り値:
      デフォルト:
      {"openid", "email", "profile"}
    • scopeExpression

      StringSE scopeExpression
      オプション。スコープ値を Jakarta Expression Language 式として指定できます。Set の場合、スコープによって設定されたすべての値をオーバーライドします。
      戻り値:
      デフォルト:
      ""
    • responseType

      StringSE responseType
      オプション。レスポンス型の値は、使用する処理フローを定義します。デフォルトでは、値は code (認証コードフロー) です。
      戻り値:
      デフォルト:
      " コード "
    • responseMode

      StringSE responseMode
      オプション。認可エンドポイントからパラメーターを返すために使用されるメカニズムを認可サーバーに通知します。
      戻り値:
      デフォルト:
      ""
    • prompt

      PromptType[] prompt
      オプション。prompt 値は、認可サーバーがユーザーに再認証と同意を求めるプロンプトを表示するかどうかを指定します。値が指定されておらず、ユーザーが以前にアクセスを認可していない場合、ユーザーには同意画面が表示されます。
      戻り値:
      デフォルト:
      {}
    • promptExpression

      StringSE promptExpression
      オプション。プロンプト値を Jakarta Expression Language 式として指定できるようにします。Set の場合、プロンプト値によって定義された値をオーバーライドします。
      戻り値:
      デフォルト:
      ""
    • display

      DisplayType display
      オプション。認可サーバーが認証と同意のユーザーインターフェースページを表示する方法を指定する表示値。
      戻り値:
      デフォルト:
      PAGE
    • displayExpression

      StringSE displayExpression
      オプション。表示値を Jakarta Expression Language 式で指定できるようにします。設定されている場合、display で定義された値をオーバーライドします。
      戻り値:
      デフォルト:
      ""
    • useNonce

      boolean useNonce
      オプション。リプレイ攻撃を軽減するために使用される文字列値を有効にします。
      戻り値:
      デフォルト:
      true
    • useNonceExpression

      StringSE useNonceExpression
      オプション。ノンスアクティベーションを Jakarta Expression Language 式として指定できます。設定されている場合、useNonce 値で定義された値が上書きされます。
      戻り値:
      デフォルト:
      ""
    • useSession

      boolean useSession
      オプション。状態を有効にすると、ノンス値と元のリクエストされたリソースデータが HTTP セッションに保存されます。それ以外の場合は Cookie に保存されます。
      戻り値:
      デフォルト:
      true
    • useSessionExpression

      StringSE useSessionExpression
      オプション。Jakarta Expression Language 式によるセッションの構成を許可します。設定すると、useSession 値が上書きされます。
      戻り値:
      デフォルト:
      ""
    • extraParameters

      StringSE[] extraParameters
      OAuth プロバイダーに送信される追加オプションの配列。

      これらは、"key=value"、つまり  extraParameters={"key1=value", "key2=value2"} の形式である必要があります。

      戻り値:
      デフォルト:
      {}
    • extraParametersExpression

      StringSE extraParametersExpression
      追加パラメーターを Jakarta Expression Language 式として定義できるようにします。設定すると、extraParameters 値が上書きされます。
      戻り値:
      デフォルト:
      ""
    • jwksConnectTimeout

      int jwksConnectTimeout
      オプション。リモート JWKS 検索の接続タイムアウト (ミリ秒単位) を設定します。値は負であってはならず、値がゼロの場合は無限のタイムアウトになります。
      戻り値:
      デフォルト:
      500
    • jwksConnectTimeoutExpression

      StringSE jwksConnectTimeoutExpression
      オプション。リモート JWKS の接続タイムアウト (ミリ秒単位) を Jakarta Expression Language 式として定義できるようにします。設定すると、jwksConnectTimeout 値が上書きされます。
      戻り値:
      デフォルト:
      ""
    • jwksReadTimeout

      int jwksReadTimeout
      オプション。リモート JWKS 取得の読み取りタイムアウト (ミリ秒単位) を設定します。値は負であってはならず、値がゼロの場合は無限のタイムアウトになります。
      戻り値:
      デフォルト:
      500
    • jwksReadTimeoutExpression

      StringSE jwksReadTimeoutExpression
      オプション。リモート JWKS 取得の読み取りタイムアウト (ミリ秒単位) を Jakarta Expression Language 式として定義できます。設定すると、jwksReadTimeout 値が上書きされます。
      戻り値:
      デフォルト:
      ""
    • tokenAutoRefresh

      boolean tokenAutoRefresh
      オプション。アクセストークンとリフレッシュトークンの自動リフレッシュを有効または無効にします。
      戻り値:
      true、アクセストークンとリフレッシュトークンが期限切れになったときに自動的にリフレッシュされる場合。
      デフォルト:
      false
    • tokenAutoRefreshExpression

      StringSE tokenAutoRefreshExpression
      オプション。アクセストークンとリフレッシュトークンの自動実行リフレッシュを Jakarta Expression Language 式として定義できるようにします。設定すると、tokenAutoRefresh の値が上書きされます。
      デフォルト:
      ""
    • tokenMinValidity

      int tokenMinValidity
      オプション。アクセストークンが期限切れと見なされる前に有効でなければならない最小有効時間をミリ秒単位で設定します。値を負にすることはできません。
      戻り値:
      デフォルト:
      10000
    • tokenMinValidityExpression

      StringSE tokenMinValidityExpression
      オプション。アクセストークンが期限切れと見なされるまでの最小有効時間 (ミリ秒単位) を Jakarta Expression Language 式として定義できます。設定すると、tokenMinValidity 値が上書きされます。
      戻り値:
      デフォルト:
      ""
    • qualifiers

      ClassSE<?>[] qualifiers
      qualifier annotations のリスト。

      これらの修飾子アノテーションを持つ HttpAuthenticationMechanism インジェクションポイントは、この OpenIdAuthenticationMechanismDefinition によって生成された Bean を注入します。

      デフォルト値は OpenIdAuthenticationMechanism であり、この OpenIdAuthenticationMechanismDefinition が OpenIdAuthenticationMechanism で修飾された型 HttpAuthenticationMechanism の Bean インスタンスを生成することを示します。

      戻り値:
      修飾子のリスト。
      導入:
      4.0
      デフォルト:
      {jakarta.security.enterprise.authentication.mechanism.http.OpenIdAuthenticationMechanismDefinition.OpenIdAuthenticationMechanism.class}