クラス AuthConfigFactory


  • public abstract class AuthConfigFactory
    extends ObjectSE
    このクラスは、認証コンテキスト構成オブジェクト、つまり ClientAuthConfig および ServerAuthConfig オブジェクトを取得するために使用できる AuthConfigProvider オブジェクトを取得するために使用されます。

    認証コンテキスト構成オブジェクトは、認証コンテキストオブジェクトを取得するために使用されます。認証コンテキストオブジェクト、つまり ClientAuthContext および ServerAuthContex オブジェクトは、認証モジュールをカプセル化します。認証モジュールは、リクエストメッセージとレスポンスメッセージのセキュリティ関連の処理を実行するプラグ可能なコンポーネントです。

    呼び出し元はモジュールを直接操作しません。代わりに、モジュールの呼び出しを管理するために認証コンテキストに依存しています。呼び出し元は、AuthConfigProvider から取得した ClientAuthConfig または ServerAuthConfig で getAuthContext メソッドを呼び出すことにより、認証コンテキストを取得します。

    以下は、クライアント認証コンテキストを取得し、それを使用してリクエストを保護するための一般的な一連の呼び出しを表しています。

    1. AuthConfigFactory ファクトリ = AuthConfigFactory.getFactory();
    2. AuthConfigProvider プロバイダー = factory.getConfigProvider(layer、appID、listener);
    3. ClientAuthConfig 構成 = provider.getClientAuthConfig(layer,appID,cbh)
    4. 文字列 authContextID = config.getAuthContextID(messageInfo);
    5. ClientAuthContext コンテキスト = config.getAuthContext(authContextID、subject、properties);
    6. コンテキスト .secureRequest(messageInfo、件名);

    システム全体の AuthConfigFactory 実装は、setFactory を呼び出すことによって設定でき、getFactory を使用して取得できます。

    この抽象クラスのすべての実装は、パブリックのゼロ引数コンストラクターを提供する必要があります。このコンストラクターは、永続的な宣言表現からの AuthConfigProviders の構築と登録(自己登録を含む)をサポートする必要があります。例: ファクトリ実装クラスは、AuthConfigProvider ごとに 1 つのエントリを持ち、各エントリが以下を表す一連の構成エントリを含むファイルの内容を解釈できます。

    • プロバイダー実装クラスの完全修飾名 (または null)
    • プロバイダー初期化プロパティのリスト (空の可能性があります)
    プロバイダー初期化プロパティは、キーと値のペアのマップ内でプロバイダーコンストラクターに渡すことができ、マップ内のすべてのキーと値が文字列型である形式で指定する必要があります。

    エントリ構文は、RegistrationContext を定義するのに十分な情報をオプションで含めることも提供する必要があります。この情報は、ファクトリがプロバイダーを登録するときにのみ存在します。例: 各エントリは、次の形式の 1 つ以上の RegistrationContext オブジェクトを含めることを提供できます。

    • メッセージレイヤー名 (または null)
    • アプリケーションコンテキスト識別子 (または null)
    • 登録の説明 (または null)
    RegistrationContext が含まれていない場合、ファクトリは、プロバイダーの構築中にプロバイダーがファクトリに自己登録できるようにする必要があります(registerConfigProvider(AuthConfigProvider provider,...) を参照)。

    AuthConfigFactory 実装は、このクラスで定義された要件に準拠している限り、独自の永続的な宣言型構文を自由に選択できます。

    関連事項:
    ClientAuthContext, ServerAuthContext, ClientAuthConfig, ServerAuthConfig, PropertiesSE
    • フィールドの詳細

      • DEFAULT_FACTORY_SECURITY_PROPERTY

        public static final StringSE DEFAULT_FACTORY_SECURITY_PROPERTY
        デフォルトの AuthConfigFactory 実装クラスを定義するために使用される Security プロパティの名前。
        関連事項:
        定数フィールド値
      • GET_FACTORY_PERMISSION_NAME

        public static final StringSE GET_FACTORY_PERMISSION_NAME
        getFactory を呼び出すために必要な SecurityPermission の名前
        関連事項:
        定数フィールド値
      • SET_FACTORY_PERMISSION_NAME

        public static final StringSE SET_FACTORY_PERMISSION_NAME
        setFactory を呼び出すために必要な SecurityPermission の名前
        関連事項:
        定数フィールド値
      • PROVIDER_REGISTRATION_PERMISSION_NAME

        public static final StringSE PROVIDER_REGISTRATION_PERMISSION_NAME
        ファクトリ実装クラスの更新メソッドへのアクセスを認可するために使用される SecurityPermission の名前。
        関連事項:
        定数フィールド値
      • getFactorySecurityPermission

        @DeprecatedSE(forRemoval=true)
        public static final SecurityPermissionSE getFactorySecurityPermission
        非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
        JEP 411 に準拠
        getFactory メソッドへのアクセスを承認するために使用される、GET_FACTORY_PERMISSION_NAME という名前の SecurityPermission。
      • setFactorySecurityPermission

        @DeprecatedSE(forRemoval=true)
        public static final SecurityPermissionSE setFactorySecurityPermission
        非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
        JEP 411 に準拠
        setFactory メソッドへのアクセスを承認するために使用される、SET_FACTORY_PERMISSION_NAME という名前の SecurityPermission。
      • providerRegistrationSecurityPermission

        @DeprecatedSE(forRemoval=true)
        public static final SecurityPermissionSE providerRegistrationSecurityPermission
        非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
        JEP 411 に準拠
        ファクトリ実装クラスの更新メソッドへのアクセスを認可するために使用する SecurityPermission(名前 PROVIDER_REGISTRATION_PERMISSION_NAME)のインスタンス。
    • コンストラクターの詳細

      • AuthConfigFactory

        public AuthConfigFactory()
    • メソッドの詳細

      • getFactory

        public static AuthConfigFactory getFactory()
        システム全体の AuthConfigFactory 実装を取得します。

        呼び出し時に null 以外のシステム全体のファクトリインスタンスが定義されている場合、たとえば setFactory の場合、それが返されます。それ以外の場合は、デフォルトの AuthConfigFactory 実装クラスのインスタンスを作成しようとします。デフォルトのファクトリ実装クラスの完全修飾クラス名は、DEFAULT_FACTORY_SECURITY_PROPERTY セキュリティプロパティの値から取得されます。デフォルトのファクトリ実装クラスのインスタンスがこのメソッドによって正常に構築されると、このメソッドはそれをシステム全体のファクトリインスタンスとして設定します。

        Java セキュリティプロパティファイルの絶対パス名は、JAVA_HOME/lib/security/java.security です。ここで、JAVA_HOME は、JDK がインストールされたディレクトリを指します。

        SecurityManager が有効になっている場合、getFactorySecurityPermission はこのメソッドを呼び出す必要があります。呼び出し時に、システム全体のファクトリインスタンスがまだ定義されていない場合は、setFactorySecurityPermission も必要になります。

        戻り値:
        呼び出し時に設定された null 以外のシステム全体の AuthConfigFactory インスタンス、またはその値が null の場合は、このメソッドによって確立されたシステム全体のファクトリインスタンスの値。このメソッドが呼び出されたときにシステム全体のファクトリが定義されておらず、セキュリティプロパティを介してデフォルトのファクトリ名が定義されていない場合、このメソッドは null を返します。
        例外:
        SecurityExceptionSE - 呼び出し元にファクトリを取得する権限がない場合、またはファクトリをシステム全体のインスタンスとして設定する場合。クラスのロード中、またはデフォルトの AuthConfigFactory 実装クラスの構築中に例外がスローされた場合にもスローされます。この場合、SecurityException には原因としてルート例外が含まれます。
      • setFactory

        public static void setFactory​(AuthConfigFactory factory)
        システム全体の AuthConfigFactory 実装を設定します。

        以前に実装が設定されていた場合は、置き換えられます。

        登録されたファクトリへの変更はリスナーに通知されません。

        パラメーター:
        factory - null の可能性がある AuthConfigFactory インスタンス。
        例外:
        SecurityExceptionSE - 発信者にファクトリを設定する権限がない場合。
      • getConfigProvider

        public abstract AuthConfigProvider getConfigProvider​(StringSE layer,
                                                             StringSE appContext,
                                                             RegistrationListener listener)
        ファクトリから登録済みの AuthConfigProvider を取得します。識別されたメッセージレイヤーとアプリケーションコンテキストに登録されている ServerAuthConfig および ClientAuthConfig オブジェクトのプロバイダーを取得します。

        すべてのファクトリは、レイヤーと appContext 引数に一致する登録済み AuthConfigProvider を選択するために、次の優先順位規則を使用する必要があります。

        • レイヤーおよび appContext 引数として渡される値に対して特別に登録されたプロバイダーが選択されます。
        • 前述のルールに従ってプロバイダーが選択されない場合は、appContext 引数として渡された値とすべての (つまり null) レイヤーに対して明示的に登録されたプロバイダーが選択されます。
        • 前述の規則に従ってプロバイダーが選択されない場合は、レイヤー引数として渡された値とすべての (つまり null) appContexts に対して明示的に登録されたプロバイダーが選択されます。
        • 前述の規則に従ってプロバイダーが選択されない場合は、すべての (つまり null) レイヤーおよびすべての (つまり null) appContexts に登録されているプロバイダーが選択されます。
        • 上記の規則に従ってプロバイダーが選択されていない場合、ファクトリは登録されたプロバイダーの検索を終了するものとします。

        上記の優先規則は、null または null 以外の className 引数で作成された登録に同等に適用されます。

        パラメーター:
        layer - 登録された AuthConfigProvider が返されるメッセージ層を識別する文字列。この引数の値は null の場合があります。
        appContext - 登録された AuthConfigProvider が返されるアプリケーションメッセージングコンテキストを識別する文字列。この引数の値は null の場合があります。
        listener - 対応する登録が登録解除または置換された場合に notify メソッドが呼び出される RegistrationListener。この引数の値は null の場合があります。
        戻り値:
        レイヤーと appContext のファクトリに登録された AuthConfigProvider インターフェースの実装、または AuthConfigProvider が選択されていない場合は null。戻り値が null の場合でも、引数リスナーがアタッチされます。
      • registerConfigProvider

        public abstract StringSE registerConfigProvider​(StringSE className,
                                                      MapSE<StringSE,​StringSE> properties,
                                                      StringSE layer,
                                                      StringSE appContext,
                                                      StringSE description)
        ファクトリ内に登録し、プロバイダー登録のファクトリの永続的な宣言表現内に、メッセージ層およびアプリケーションコンテキスト識別子の ServerAuthConfig および / または ClientAuthConfig オブジェクトのプロバイダーを記録します。このメソッドは通常、プロバイダーをファクトリに登録する前にプロバイダーのインスタンスを構築します。これらのインスタンスが ClassName および現在の呼び出しで渡されたものと同等のプロパティ引数で登録されている場合、ファクトリは既存のプロバイダーインスタンスの永続的な登録を継承または変更できます。

        このメソッドは、AuthConfigProvider インターフェースのすべての実装でサポートされる必要がある 2 つの引数コンストラクターを使用し、このメソッドはコンストラクターのファクトリ引数に null 値を渡す必要があります。AuthConfigProviderImpl AuthConfigProviderImpl(Map properties, AuthConfigFactory factory)

        メッセージレイヤーと appContext の特定の組み合わせに対して、ファクトリ内に存在できる登録は最大で 1 つです。レイヤーと appContext の値が同一である既存の登録は、後続の登録に置き換えられます。置き換えが発生すると、登録識別子、レイヤー、appContext 識別子は変更されず、AuthConfigProvider (初期化プロパティを含む) と説明が置き換えられます。

        Java プロセスの有効期間中、ファクトリは登録に一意の登録識別子を割り当てる必要があり、メッセージレイヤーや appContext 識別子が前回の使用と異なる登録に、以前に使用された登録識別子を割り当ててはなりません。

        このメソッドを使用して実行されるプログラム登録は、ファクトリコンストラクターによって使用されるプロバイダー登録の永続的な宣言型表現を(上記の置換ルールに従って)更新する必要があります。

        SecurityManager が有効になっている場合、引数プロバイダーをロードする前、ファクトリに変更を加える前に、このメソッドは、呼び出し元のアクセス制御コンテキストに providerRegistrationSecurityPermission が付与されていることを確認する必要があります。

        パラメーター:
        className - AuthConfigProvider 実装クラスの完全修飾名 (または null)。このパラメーターに null 値を指定してこのメソッドを呼び出すと、結果の登録が最も一致するレイヤーと appContext 値を指定して呼び出されたときに、getConfigProvider は null を返します。
        properties - プロバイダーコンストラクターのプロパティ引数に渡される初期化プロパティを含む Map オブジェクト。この引数は null の場合があります。
        layer - プロバイダーがファクトリで登録されるメッセージレイヤーを識別する文字列。このパラメーターの引数として null 値を渡すことができます。その場合、プロバイダーはすべてのレイヤーに登録されます。
        appContext - このプロバイダーに構成オブジェクトをリクエストするためにランタイムが使用できる文字列値。このパラメーターの引数として null 値を渡すことができます。その場合、プロバイダーはすべての構成 ID(指定されたレイヤー)に登録されます。
        description - プロバイダーを説明するテキスト文字列。この値は null の可能性があります。
        戻り値:
        ファクトリによってプロバイダー登録に割り当てられた文字列識別子。ファクトリから登録を削除するために使用できます。
        例外:
        SecurityExceptionSE - 呼び出し元がファクトリでプロバイダーを登録する権限を持っていない場合、またはプロバイダーの構築(null 以外の className が指定されている場合)または登録が失敗した場合。
      • registerConfigProvider

        public abstract StringSE registerConfigProvider​(AuthConfigProvider provider,
                                                      StringSE layer,
                                                      StringSE appContext,
                                                      StringSE description)
        (メモリ内の)ファクトリ内で、メッセージ層およびアプリケーションコンテキスト識別子の ServerAuthConfig および / または ClientAuthConfig オブジェクトのプロバイダーを登録します。このメソッドは、プロバイダー登録のファクトリの永続的な宣言型表現には影響せず、プロバイダーが自己登録を実行するために使用することを目的としています。

        メッセージレイヤーと appContext の特定の組み合わせに対して、ファクトリ内に存在できる登録は最大で 1 つです。レイヤーと appContext の値が同一である既存の登録は、後続の登録に置き換えられます。置き換えが発生すると、登録識別子、レイヤー、appContext 識別子は変更されず、AuthConfigProvider (初期化プロパティを含む) と説明が置き換えられます。

        Java プロセスの有効期間中、ファクトリは登録に一意の登録識別子を割り当てる必要があり、メッセージレイヤーや appContext 識別子が前回の使用と異なる登録に、以前に使用された登録識別子を割り当ててはなりません。

        SecurityManager が有効になっている場合、ファクトリに変更を加える前に、このメソッドは、呼び出し元のアクセス制御コンテキストに providerRegistrationSecurityPermission が付与されていることを確認する必要があります。

        パラメーター:
        provider - ファクトリで登録される AuthConfigProvider (または null)。このパラメーターに null 値を指定してこのメソッドを呼び出すと、結果の登録が最も一致するレイヤーと appContext 値を指定して呼び出されたときに、getConfigProvider は null を返します。
        layer - プロバイダーがファクトリで登録されるメッセージレイヤーを識別する文字列。このパラメーターの引数として null 値を渡すことができます。その場合、プロバイダーはすべてのレイヤーに登録されます。
        appContext - このプロバイダーに構成オブジェクトをリクエストするためにランタイムが使用できる文字列値。このパラメーターの引数として null 値を渡すことができます。その場合、プロバイダーはすべての構成 ID(指定されたレイヤー)に登録されます。
        description - プロバイダーを説明するテキスト文字列。この値は null の可能性があります。
        戻り値:
        ファクトリによってプロバイダー登録に割り当てられた文字列識別子。ファクトリから登録を削除するために使用できます。
        例外:
        SecurityExceptionSE - 発信者がファクトリでプロバイダーを登録する権限を持っていない場合、またはプロバイダーの登録が失敗した場合。
      • registerServerAuthModule

        public abstract StringSE registerServerAuthModule​(ServerAuthModule serverAuthModule,
                                                        ObjectSE context)
        (メモリ内) ファクトリ内に、メッセージ層の ServerAuthModule のインスタンスと、プロファイル固有のコンテキストオブジェクトによって識別されるアプリケーションコンテキスト識別子を登録します。

        これは、独自の手段または標準 API を使用して、すでに登録されている他のモジュールをオーバーライドします。ServerAuthModule は、プロファイル固有のコンテキストオブジェクトに関連付けられたコンテキストが終了したときに、removeServerAuthModule への呼び出しを介して削除されます。

        このメソッドは registerConfigProvider の代わりに使用できる便利なメソッドですが、最終的には同じ効果があることに注意してください。つまり、layer および appContext パラメーターはコンテキストオブジェクトから生成され、ServerAuthModule は実装固有の AuthConfigProvider によってラップされます。これらは、registerConfigProvider または同じ効果を持つ内部メソッドを呼び出すために使用されます。返された登録 ID は、プロファイル固有のコンテキストオブジェクトに関連付けられ、このメソッドからも返されます。

        「プロファイル固有のコンテキストオブジェクト」は、たとえば、サーブレットコンテナープロファイルの ServletContext です。この ServletContext に関連付けられたコンテキストは、たとえばそれに対応するアプリケーションがアンデプロイされると終了します。登録 ID と ServletContext の関連付けは、単に登録 ID を値として ServletContext で setAttribute メソッドを呼び出すことを意味します。(name 属性は、このバージョンの仕様では標準化されていません)

        パラメーター:
        serverAuthModule - 登録する ServerAuthModule インスタンス
        context - モジュールが登録されているアプリケーションのプロファイル固有のコンテキスト
        戻り値:
        ファクトリによってプロバイダー登録に割り当てられた文字列識別子。ファクトリから登録を削除するために使用できます。
      • removeServerAuthModule

        public abstract void removeServerAuthModule​(ObjectSE context)
        registerServerAuthModule への呼び出しを介して以前に登録された ServerAuthModule (および潜在的に包含されるラッパー / ファクトリ) を削除します。

        このメソッドは removeRegistration の代わりに使用できる便利なメソッドですが、最終的には同じ効果があることに注意してください。つまり、registerServerAuthModule からの戻り値で removeRegistration を呼び出すと、ServerAuthModule が削除されるという点で同じ効果がなければなりません。

        パラメーター:
        context - モジュールが削除されるアプリケーションのプロファイル固有のコンテキスト。
      • removeRegistration

        public abstract boolean removeRegistration​(StringSE registrationID)
        識別されたプロバイダー登録をファクトリから(および必要に応じてプロバイダー登録の永続的な宣言型表現から)削除し、削除された登録に関連付けられているリスナーを呼び出します。

        SecurityManager が有効になっている場合、ファクトリに変更を加える前に、このメソッドは、呼び出し元のアクセス制御コンテキストに providerRegistrationSecurityPermission が付与されていることを確認する必要があります。

        パラメーター:
        registrationID - ファクトリでのプロバイダー登録を識別する文字列
        戻り値:
        指定された識別子の登録があり、それが削除された場合は True。登録 ID が無効な場合は false を返します。
        例外:
        SecurityExceptionSE - 発信者がファクトリでプロバイダーの登録を解除する権限を持っていない場合。
      • detachListener

        public abstract StringSE[] detachListener​(RegistrationListener listener,
                                                StringSE layer,
                                                StringSE appContext)
        このメソッドの対応する引数によってレイヤーと appContext 値が一致するすべてのプロバイダー登録からリスナーの関連付けを解除します。

        ファクトリは定期的にリスナーに通知して、使用されなくなったリスナーを効果的に切り離す必要があります。

        SecurityManager が有効になっている場合、ファクトリに変更を加える前に、このメソッドは、呼び出し元のアクセス制御コンテキストに providerRegistrationSecurityPermission が付与されていることを確認する必要があります。

        パラメーター:
        listener - 切り離される RegistrationListener。
        layer - メッセージレイヤーまたは null を識別する文字列。
        appContext - アプリケーションコンテキストまたは null を識別する文字列値。
        戻り値:
        文字列値の配列。各値は、リスナーが削除されたプロバイダー登録を識別します。このメソッドが null を返すことはありません。リスナーが登録から削除されていない場合は、空の配列を返します。
        例外:
        SecurityExceptionSE - 呼び出し元にリスナーをファクトリから切り離す権限がない場合。
      • getRegistrationIDs

        public abstract StringSE[] getRegistrationIDs​(AuthConfigProvider provider)
        ファクトリでのプロバイダーインスタンスのすべての登録の登録識別子を取得します。
        パラメーター:
        provider - 登録 ID が返される AuthConfigurationProvider。この引数は null の場合があります。その場合、ファクトリ内のすべてのアクティブな登録の ID が返されることを示します。
        戻り値:
        文字列値の配列。各値は、ファクトリでのプロバイダー登録を識別します。このメソッドが null を返すことはありません。識別されたプロバイダーの登録がファクトリにない場合は、空の配列を返します。
      • getRegistrationContext

        public abstract AuthConfigFactory.RegistrationContext getRegistrationContext​(StringSE registrationID)
        特定された登録の登録コンテキストを取得します。
        パラメーター:
        registrationID - ファクトリでのプロバイダー登録を識別する文字列
        戻り値:
        RegistrationContext または null。null 以外の値が返される場合、登録に対応する登録コンテキストのコピーです。登録識別子がアクティブな登録に対応していない場合は、Null が返されます
      • refresh

        public abstract void refresh()
        プロバイダー登録の永続的な宣言表現をファクトリに再処理させます。

        ファクトリは、プロバイダー実装クラスまたは初期化プロパティの変更が発生した場合にのみ、既存の登録を置き換える必要があります。

        SecurityManager が有効になっている場合、このメソッドがファクトリに変更を加える可能性がある前に、このメソッドは、呼び出し元のアクセス制御コンテキストに providerRegistrationSecurityPermission が付与されていることを確認する必要があります。

        例外:
        SecurityExceptionSE - 呼び出し元にファクトリをリフレッシュする権限がない場合、または再初期化中にエラーが発生した場合。