![]() |
![]() |
|
|
| |
Web アプリケーションでのセキュリティのコンフィグレーション
この章では、Web アプリケーションでセキュリティをコンフィグレーションする方法について説明します。
Web アプリケーションでのセキュリティのコンフィグレーションの概要
Web アプリケーションにセキュリティを設定するには、認証を使用するか、Web アプリケーション内の特定のリソースへのアクセスを制限するか、またはサーブレット コードでセキュリティの呼び出しを使用します。複数のタイプのセキュリティ レルムを使用できます。セキュリティ レルムについては、「セキュリティの基礎概念」を参照してください。セキュリティ レルムは、複数の仮想ホストの間で共有されます。
Web アプリケーションの認証をコンフィグレーションするには、web.xml
デプロイメント記述子の <login-config>
要素を使用します。この要素では、ユーザの資格が収められるセキュリティ レルム、認証方式、および認証用リソースの場所を定義します。セキュリティ レルムの詳細については、「セキュリティの基礎概念」を参照してください。
Web アプリケーション用の認証を設定するには、次の手順を実行します。
web.xml
デプロイメント記述子を開くか、Administration Console を使用します。詳細については、
Web アプリケーション開発者向けツールを参照してください。
<auth-method>
要素を使用して認証メソッドを指定します。選択できる方式は以下のとおりです。
j_username
と j_password
で、アクション属性は j_security_check
でなければなりません。次に、FORM 認証を使用するための HTML コードのサンプルを示します。
<form method="POST" action="j_security_check">
<input type="text" name="j_username">
<input type="password" name="j_password">
</form>
<form-login-page>
要素を使って定義します。
session.isNew()
メソッドは、認証の成功後に提供されるページから呼び出されると FALSE
を返します。
<form-login-page>
要素を使用)、および失敗した認証に応答するリソースの場所(<form-error-page>
要素を使用)も定義します。FORM 認証をコンフィグレーションする手順については、
form-login-config 要素を参照してください。
<realm-name>
要素を使用して認証のレルムを指定します。特定のレルムを指定しなかった場合は、Administration Console の [Web アプリケーション|コンフィグレーション|その他] タブにある [認証レルム名] フィールドで定義されたレルムが使用されます。詳細については、
form-login-config 要素を参照してください。
デフォルトでは、WebLogic Server はすべての Web アプリケーションに同じクッキー名(JSESSIONID
)を割り当てます。どの種類の認証を使用する場合でも、同じクッキー名を使用する Web アプリケーションでは、認証用に 1 つのサインオンを使用します。ユーザが認証されると、その認証は、同じクッキー名を使用するすべての Web アプリケーションへのリクエストに対して有効になります。ユーザは再び認証を要求されることはありません。
Web アプリケーションごとに個別の認証が必要な場合は、Web アプリケーションにユニークなクッキー名またはクッキー パスを指定できます。CookieName
パラメータでクッキー名を指定し、CookiePath
パラメータでクッキー パスを指定します。これらのパラメータは、<session-descriptor>
要素の WebLogic 固有のデプロイメント記述子 weblogic.xml
で定義されています。詳細については、
session-descriptor 要素を参照してください。
クッキー名を保持しつつ Web アプリケーションごとに別々の認証が必要な場合は、Web アプリケーションごとにクッキー パラメータ(CookiePath
)を変えることができます。
Web アプリケーションの特定のリソース(サーブレット、JSP、または HTML ページ)へのアクセスを制限するには、それらのリソースにセキュリティ制約を適用します。
セキュリティ制約をコンフィグレーションするには、次の手順に従います。
web.xml
および weblogic.xml
デプロイメント記述子を開くか、Administration Console を使用します。詳細については、
Web アプリケーション開発者向けツールを参照してください。
weblogic.xml
で
security-role-assignment 要素を使用して、これらのロールをレルムのプリンシパルにマップします。
<web-resource-collection>
要素にネストされる <url-pattern>
要素を使用して、セキュリティ制約を適用する Web アプリケーション リソースを定義します。<url-pattern>
は、ディレクトリ、ファイル名、または <servlet-mapping>
です。
また、セキュリティ制約を Web アプリケーション全体に適用する場合は、次のエントリを使用します。
<url-pattern>/*</url-pattern>
<web-resource-collection>
要素にネストされる <http-method>
要素を使用して、セキュリティ制約を適用する HTTP メソッド(GET
または POST
)を定義します。HTTP メソッドごとに、別々の <http-method>
要素を使用します。
<user-data-constraint>
メソッドにネストされる <transport-guarantee>
要素を使用して、クライアントとサーバ間の通信に SSL を使用するかどうかを定義します。
コード リスト 5-1 セキュリティ制約のサンプル
web.xml
のエントリ :
<security-constraint>
<web-resource-collection>
<web-resource-name>SecureOrdersEast</web-resource-name>
<description>
Security constraint for
resources in the orders/east directory
</description>
<url-pattern>/orders/east/*
</url-pattern>
<http-method>POST
</http-method>
<http-method>GET
</http-method>
</web-resource-collection>
<auth-constraint>
<description>
constraint for east coast sales
</description>
<role-name>east</role-name>
<role-name>manager</role-name>
</auth-constraint>
<user-data-constraint>
<description>SSL not required</description>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
...
javax.servlet.http.HttpServletRequest.isUserInRole(String role)
メソッドを使用すると、サーブレット コード中のユーザとロールにプログラマティックにアクセスできるようサーブレットを記述できます。文字列の role
は、Web アプリケーション デプロイメント記述子の <servlet>
宣言の <security-role-ref>
要素にネストされる <role-name>
要素に定義される名前にマップされます。<role-link>
要素は、Web アプリケーション デプロイメント記述子の <security-role>
要素に定義される <role-name>
にマップされます。
次のリストで例を示します。
コード リスト 5-2 セキュリティ ロール マッピングの例
サーブレット コード
isUserInRole("
manager
");
web.xml
エントリ
<servlet>
. . .
<role-name>manager
</role-name>
<role-link>mgr
</role-link>
. . .
</servlet>
<security-role>
<role-name>mgr
</role-name>
</security-role>
weblogic.xml
エントリ
<security-role-assignment>
<role-name>mgr
</role-name>
<principal-name>al</principal-name>
<principal-name>george</principal-name>
<principal-name>ralph</principal-name>
</security-role-ref>
![]() |
![]() |
![]() |