JEE コンテナー管理セキュリティーの使用
JSF Web アプリケーションを保護するために、 コンテナー管理セキュリティーを使用することができます。これは、JEE 対応 Web アプリケーション・サーバーで処理されます。 このトピックでは、サンプル・ログインやエラー JSP のほか、EGL セキュリティー関連の関数のリストなど、いくつかの詳細を説明します。
Web アプリケーション・サーバーの資料についても検討する場合があります。
web.xml での役割および制約の割り当て
JEE セキュリティーでは、Web リソースへのアクセス権は、クラーク や 管理者 のようなセキュリティー・ロールに基づいています。それぞれの役割は デベロッパーが割り当てたステータスであり、アプリケーション・コードが付随する JEE デプロイメント記述子 (web.xml) に保存されています。 また、特定の役割に最終的に割り当てられているユーザーが使用可能な Web ページを定義する一連の制約も、web.xml に保存されています。
- Web プロジェクトで、デプロイメント記述子を右クリックして 、「ページ」タブをクリックする。
- 「ログイン」ボックスで、認証方式 (ログイン・ページやエラー・ページの使用に 関連する フォーム など) を指定し、関連の詳細 (具体的なログイン・ページやエラー・ページの参照など) を指定する。
ログイン・ページとエラー・ページの作成
フォーム認証方式を使用する場合、以下の JSP ページをカスタマイズできます。
- サンプル・ログイン JSP
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <H1>Login Page</H1> <body> <form method="POST" action="j_security_check"> User Name : <input type="text" name="j_username"/> Password : <input type="password" name="j_password"/> <input type="submit" value="Login"/> </form> </body> </html> - サンプル・エラー JSP
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <H1>Login Error Page</H1> <body> Status = Login Error !!! </body> </html>
application.xml でのユーザーおよびグループの割り当て
デプロイヤー (通常はシステム管理者) は、各セキュリティー役割を特定のユーザーおよびグループに関連付けます。 デプロイヤーは、EAR プロジェクト・デプロイメント記述子 (application.xml) のカスタマイズによって (通常は、そのファイルの「セキュリティー」タブでの操作によって)、その関連を作成します。
JEE セキュリティーをサポートするシステム関数の使用
- getAuthenticationType は、JEE 認証方式を戻します。そのような認証を使用していない場合、この関数は空ストリングを返します。
最も使用頻度の高い認証方式は、FORM (この場合、ユーザーはブラウザー・セッションを終了せずにログアウトできます) か、より安全性の 高い CLIENT_CERT (クライアント証明書 用。認証データは暗号化されます。オプションとして、サーバーは、セキュリティー証明書を検査してからデータを受信するかどうかを決定することができます) です。
- getRemoteUser は、ユーザーのログイン ID があれば、そのログイン ID を戻します。 JEE 認証方式を使用していない場合は、この関数は空ストリングを戻します。
- isUserInRole は、ユーザーが指定された役割に含まれているかどうかを示すブール値を戻します。
認証を使用していない場合、この関数は空ストリングを戻します。
ユーザーの役割をランタイムが認識することで、アプリケーションは、許可規則に従った処理を指示することができます。