ORACLE JAPAN Server Release 6.1

 

  |  

  WebLogic Server ホーム   |     Web アプリケーション   |   前へ   |   次へ   |   目次   |   索引   |   PDF 版

Web アプリケーションでのセキュリティのコンフィグレーション

 

この章では、Web アプリケーションでセキュリティをコンフィグレーションする方法について説明します。

 


Web アプリケーションでのセキュリティのコンフィグレーションの概要

Web アプリケーションにセキュリティを設定するには、認証を使用するか、Web アプリケーション内の特定のリソースへのアクセスを制限するか、またはサーブレット コードでセキュリティの呼び出しを使用します。複数のタイプのセキュリティ レルムを使用できます。セキュリティ レルムについては、「セキュリティの基礎概念」を参照してください。セキュリティ レルムは、複数の仮想ホストの間で共有されます。

 


Web アプリケーション用の認証の設定

Web アプリケーションの認証をコンフィグレーションするには、web.xml デプロイメント記述子の <login-config> 要素を使用します。この要素では、ユーザの資格が収められるセキュリティ レルム、認証方式、および認証用リソースの場所を定義します。セキュリティ レルムの詳細については、「セキュリティの基礎概念」を参照してください。

Web アプリケーション用の認証を設定するには、次の手順を実行します。

  1. テキスト エディタで web.xml デプロイメント記述子を開くか、Administration Console を使用します。詳細については、 Web アプリケーション開発者向けツールを参照してください。

  2. <auth-method> 要素を使用して認証メソッドを指定します。選択できる方式は以下のとおりです。

    BASIC

    基本認証では、Web ブラウザを使用してユーザ名/パスワード ダイアログ ボックスを表示します。このユーザ名とパスワードは、セキュリティ レルムに対して認証されます。

    FORM

    フォーム ベースの認証では、ユーザ名とパスワードが指定された HTML フォームを返す必要があります。フォーム要素から返されるフィールドは j_usernamej_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>

    この HTML フォームの生成に使用するリソースは、HTML ページ、JSP、またはサーブレットです。このリソースは、<form-login-page> 要素を使って定義します。

    HTTP セッション オブジェクトはログイン ページが提供されるときに作成されます。したがって、session.isNew() メソッドは、認証の成功後に提供されるページから呼び出されると FALSE を返します。

    CLIENT-CERT

    クライアント証明書を使用してリクエストを認証します。詳細については、「SSL プロトコルのコンフィグレーション」を参照してください。

  3. FORM 認証を選択した場合、HTML ページの生成に使用するリソースの場所(<form-login-page> 要素を使用)、および失敗した認証に応答するリソースの場所(<form-error-page> 要素を使用)も定義します。FORM 認証をコンフィグレーションする手順については、 form-login-config 要素を参照してください。

  4. <realm-name> 要素を使用して認証のレルムを指定します。特定のレルムを指定しなかった場合は、Administration Console の [Web アプリケーション|コンフィグレーション|その他] タブにある [認証レルム名] フィールドで定義されたレルムが使用されます。詳細については、 form-login-config 要素を参照してください。

  5. Web アプリケーションごとに別々にログインを定義する場合は、 複数の Web アプリケーション、クッキー、および認証を参照してください。定義しない場合は、同じクッキーを使用するすべての Web アプリケーションでの認証に 1 つのサインオンが使用されます。

 


複数の Web アプリケーション、クッキー、および認証

デフォルトでは、WebLogic Server はすべての Web アプリケーションに同じクッキー名(JSESSIONID)を割り当てます。どの種類の認証を使用する場合でも、同じクッキー名を使用する Web アプリケーションでは、認証用に 1 つのサインオンを使用します。ユーザが認証されると、その認証は、同じクッキー名を使用するすべての Web アプリケーションへのリクエストに対して有効になります。ユーザは再び認証を要求されることはありません。

Web アプリケーションごとに個別の認証が必要な場合は、Web アプリケーションにユニークなクッキー名またはクッキー パスを指定できます。CookieName パラメータでクッキー名を指定し、CookiePath パラメータでクッキー パスを指定します。これらのパラメータは、<session-descriptor> 要素の WebLogic 固有のデプロイメント記述子 weblogic.xml で定義されています。詳細については、 session-descriptor 要素を参照してください。

クッキー名を保持しつつ Web アプリケーションごとに別々の認証が必要な場合は、Web アプリケーションごとにクッキー パラメータ(CookiePath)を変えることができます。

 


Web アプリケーション リソースへのアクセスの制限

Web アプリケーションの特定のリソース(サーブレット、JSP、または HTML ページ)へのアクセスを制限するには、それらのリソースにセキュリティ制約を適用します。

セキュリティ制約をコンフィグレーションするには、次の手順に従います。

  1. テキスト エディタで web.xml および weblogic.xml デプロイメント記述子を開くか、Administration Console を使用します。詳細については、 Web アプリケーション開発者向けツールを参照してください。

  2. セキュリティ レルムの 1 つまたは複数のプリンシパルにマップされるロールを定義します。ロールを定義するには、Web アプリケーション デプロイメント記述子で security-role 要素を使います。次に、WebLogic 固有のデプロイメント記述子 weblogic.xml security-role-assignment 要素を使用して、これらのロールをレルムのプリンシパルにマップします。

  3. <web-resource-collection> 要素にネストされる <url-pattern> 要素を使用して、セキュリティ制約を適用する Web アプリケーション リソースを定義します。<url-pattern> は、ディレクトリ、ファイル名、または <servlet-mapping> です。

    また、セキュリティ制約を Web アプリケーション全体に適用する場合は、次のエントリを使用します。

    <url-pattern>/*</url-pattern>

  4. <web-resource-collection> 要素にネストされる <http-method> 要素を使用して、セキュリティ制約を適用する HTTP メソッド(GET または POST)を定義します。HTTP メソッドごとに、別々の <http-method> 要素を使用します。

  5. <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>

 

back to top previous page next page