認証は、ユーザIDとパスワードによって、正当なユーザであるかをチェックする機能です。これにより、不当なユーザからのアクセスを防止できます。
認証方法は以下が用意されています。
Servletによる認証
Servletでは以下の認証方法を使用してWebコンテナへ接続するクライアントの認証を行うことができます。
BASIC認証
FORM認証
設定方法の詳細は、「4.2.2.2 Web application deployment descriptor (web.xml)」を参照してください。
認証に失敗した場合
BASIC認証/FORM認証に失敗した場合はサーバーログに以下のメッセージが出力され、ステータスコード:401が返されます。
SEC5046
WEBSEC00001
Java EEアプリケーションクライアントによる認証
Java EEアプリケーションクライアントからEJBにはIIOP通信されるため、接続するサーバのORB設定で「IIOPクライアント認証」の設定を有効とした場合にはクライアントで認証情報を指定する必要があります。また、呼び出すWebサービスにHTTP Basic認証が設定されている場合、WebサービスクライアントからのリクエストにHTTP Basic認証情報を設定する必要があります。
接続するサーバで認証が必要と判断された場合、セキュリティコールバックハンドラが実行されます。deployment descriptorファイル (application-client.xml)に任意のセキュリティコールバックハンドラを指定できます。セキュリティコールバックハンドラを指定しなかった場合にはデフォルトのセキュリティコールバックハンドラが実行されます。以下にデフォルトのセキュリティコールバックハンドラの動作と、セキュリティコールバックハンドラを実装する場合について説明します。
なお、IJServerクラスタの設定でHeartbeatが有効となっているとセキュリティコールバックハンドラが実行されません。そのため、IIOPの認証を使用する場合は、Heartbeatを無効にしてください。
デフォルトのセキュリティコールバックハンドラ
デフォルトのセキュリティコールバックハンドラは以下のように動作します。
appclientコマンドの-userオプションと-passwordオプションを指定した場合、各オプションで指定したユーザ名とパスワードで認証を行います。
appclientコマンドの-textauthオプションを指定した場合、コンソールにユーザ名とパスワードの入力を促すメッセージを出力して、入力された情報で認証を行います。
1.または2.においてオプションを指定していなかった場合、ダイアログボックスが表示され、ユーザ名とパスワードを要求します。
セキュリティコールバックハンドラの実装
Java EEアプリケーションクライアントでJAASコールバックハンドラを実装すると、必要な資格証明を取得するためにログイン画面を表示するなどのカスタム機能を提供できます。そのような場合、コンテナにより起動時にコールバックハンドラがインスタンス化され、デフォルトのセキュリティコールバックハンドラは無視されます。
カスタムセキュリティコールバックハンドラを実装するには、次のように行います。
javax.security.auth.callback.CallbackHandlerインタフェースを実装し、引数を持たないコンストラクタを持つクラス(またはコンストラクタを定義しないクラス)を作成します。
アプリケーションクライアントJARファイルにコールバックハンドラのクラスを追加する、または環境変数APPCPATHにコールバックハンドラのクラスを設定します。
ハンドラ・クラスへの参照をapplication-client.xmlファイルに追加します。
例
<application-client> <callback-handler> com.cart.MyCallbackHandler </callback-handler> </application-client>
注意
指定したクラスがロードできない場合や、カスタムセキュリティコールバックハンドラのクラスに異常がある場合(引数を持つコンストラクタを定義しているなど)には、デフォルトのセキュリティコールバックハンドラが実行されます。