アノテーション型 OpenIdAuthenticationMechanismDefinition


  • @TargetSE({TYPESE,METHODSE})
    @RetentionSE(RUNTIMESE)
    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

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

        StringSE redirectURI
        OpenId Connect Provider によってレスポンスが送信されるリダイレクト URI (コールバック URI)。この URI は、OpenID プロバイダーに事前登録されたクライアントのリダイレクト URI 値の 1 つと正確に一致する必要があります。
        戻り値:
        デフォルト:
        "${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
        オプション。認可サーバーが認証と同意のユーザーインターフェースページを表示する方法を指定する表示値。
        戻り値:
        デフォルト:
        jakarta.security.enterprise.authentication.mechanism.http.openid.DisplayType.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 値が上書きされます。
        戻り値:
        デフォルト:
        ""