列挙型 AuthenticationStatus

  • 実装されたすべてのインターフェース:
    SerializableSEComparableSE<AuthenticationStatus>

    public enum AuthenticationStatus
    extends EnumSE<AuthenticationStatus>
    AuthenticationStatus は、主に HttpAuthenticationMechanism によって戻り値として使用され、認証プロセスの結果(ステータス)を示します。

    HttpAuthenticationMechanism.validateRequest(jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse, jakarta.security.enterprise.authentication.mechanism.http.HttpMessageContext) からの結果の場合、AuthenticationStatus は、次のルールに従って、Jakarta EE サーバーによって対応する Jakarta Authentication AuthStatus に変換される必要があります。

    • AuthenticationStatus.NOT_DONE から AuthStatus.SUCCESS
    • AuthenticationStatus.SEND_CONTINUE から AuthStatus.SEND_CONTINUE
    • AuthenticationStatus.SUCCESS から AuthStatus.SUCCESS
    • AuthenticationStatus.SEND_FAILURE から AuthStatus.SEND_FAILURE

    上で概説した変換の後、変換された結果は、Jakarta Authentication 仕様のサーブレットコンテナープロファイルで指定されているように、Jakarta EE サーバーによって処理される必要があります。

    実装ノート : Jakarta Authentication Servlet Container Profile は AuthStatus.SUCCESS の結果を処理する方法に関する信頼できる情報源であり、この仕様ではいかなる種類の制約も課されていませんが、実際には Jakarta EE サーバーは主に結果が AuthStatus.SUCCESS であるか AuthStatus.SUCCESS ではないかを確認することが期待されます。簡単に言うと、結果が AuthStatus.SUCCESS の場合、認証された ID(存在する場合)を現在の HTTP リクエストに設定(確立)する必要があります。そうでない場合は設定しません。

    AuthenticationStatus 型でもある SecurityContext.authenticate(jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse, jakarta.security.enterprise.authentication.mechanism.http.AuthenticationParameters) の戻り値は、上記の HttpAuthenticationMechanism#validateRequest メソッドの結果に強く関連していますが、Jakarta EE サーバーは、対応する HttpServletRequest.authenticate(jakarta.servlet.http.HttpServletResponse) 呼び出しの結果から次のように変換する必要があります。

    • true から AuthenticationStatus.SUCCESS
    • false から [last status] (下記を参照)
    • ServletException または IOException から AuthenticationStatus.SEND_FAILURE

    HttpAuthenticationMechanism が使用された場合、[last status] は HttpAuthenticationMechanism#validateRequest によって返される値でなければなりません。

    Jakarta Authentication ServerAuthModule(SAM)が使用され、HttpAuthenticationMechanism が使用されなかった場合、Jakarta EE サーバーは、[last status] を次のように変換された ServerAuthModule#validateRequest によって返される値に設定することをお勧めします。

    • AuthStatus.SEND_CONTINUE から AuthenticationStatus.SEND_CONTINUE
    • AuthStatus.SUCCESS から AuthenticationStatus.SUCCESS
    • AuthStatus.SEND_FAILURE から AuthenticationStatus.SEND_FAILURE
    • (他のすべての結果)AuthenticationStatus.NOT_DONE へ

    Jakarta EE Server 独自の ID ストアと同等のものが使用され、HttpAuthenticationMechanism が使用されなかった場合、Jakarta EE サーバーは、[last status] を AuthenticationStatus の各列挙定数の記述に論理的に対応する値に設定することをお勧めしますが必須ではありません。この結果は、移植可能であるとしてアプリケーションコードに依存してはなりません。

    SecurityContext#authenticate を呼び出すアプリケーションコードは、AuthenticationStatus のすべての可能な値に作用することが期待されています。

    • 列挙定数の詳細

      • NOT_DONE

        public static final AuthenticationStatus NOT_DONE
        認証メカニズムが呼び出されましたが、認証しないことにしました。このステータスは通常、プリエンプティブセキュリティで返されます。認証メカニズムが呼び出されますが、認証はオプションであり、たとえば特定のリクエストヘッダーが存在する場合にのみ実行されます。
      • SEND_CONTINUE

        public static final AuthenticationStatus SEND_CONTINUE
        認証メカニズムが呼び出され、発信者とのマルチステップ認証ダイアログが開始されました(たとえば、発信者がログインページにリダイレクトされました)。簡単に言うと、認証は「進行中」です。このステータスを受け取ったときに、呼び出し元のアプリケーションコード(存在する場合)はレスポンスに書き込まないでください。
      • SUCCESS

        public static final AuthenticationStatus SUCCESS
        認証メカニズムが呼び出され、呼び出し元が正常に認証されました。Jakarta EE サーバーがこの結果を処理した後、呼び出し元のプリンシパルが使用可能になります。
      • SEND_FAILURE

        public static final AuthenticationStatus SEND_FAILURE
        認証メカニズムが呼び出されましたが、呼び出し元が正常に認証されなかったため、呼び出し元のプリンシパルは使用できません。

        このステータスは、論理的な問題(資格情報が一致しない、発信者 ID が見つからないなど)を示すために使用する必要があることに注意してください。システムレベルの問題(データベース接続のタイムアウトなど)には、例外を使用する必要があります。

    • メソッドの詳細

      • values

        public static AuthenticationStatus[] values()
        この列挙型の定数を含む配列を、宣言されている順序で返します。このメソッドは、次のように定数を反復するために使用できます。
        for (AuthenticationStatus c : AuthenticationStatus.values())
            System.out.println(c);
        
        戻り値:
        この列挙型の定数を宣言されている順序で含む配列
      • valueOf

        public static AuthenticationStatus valueOf​(StringSE name)
        指定された名前を持つこの型の列挙定数を返します。文字列は、この型の列挙定数を宣言するために使用される識別子と正確に一致する必要があります。(余分な空白文字は許可されません。)
        パラメーター:
        name - 返される列挙定数の名前。
        戻り値:
        指定された名前の列挙定数
        例外:
        IllegalArgumentExceptionSE - この列挙型に指定された名前の定数がない場合
        NullPointerExceptionSE - 引数が null の場合