宣言的セキュリティ

以下のトピックでは、WebLogic Server の宣言的セキュリティ モデルを使って Web サービスへのアクセスを制限する方法を説明します。

WebLogic Workshop Web サービスのセキュリティについての概要は、セキュリティを参照してください。

WebLogic Server の宣言的セキュリティ モデルについての概要は、WebLogic Server 7.0 のマニュアルで Web アプリケーションでのセキュリティのコンフィグレーションの概要を参照してください。

Web リソース、ロール、ユーザ

宣言的セキュリティ モデルでは、特定の Web リソースを特定のセキュリティ ロールを割り当てられたユーザに対してのみアクセス可能として宣言します。Web リソースには、Web アプリケーション全体、アプリケーション内の特定の Web サービス、Web サービス内の特定のメソッドのすべてが含まれます。宣言的セキュリティでは、基本認証により、保護された Web リソースにアクセスしようとするユーザは有効なユーザ名とパスワードの入力とともに、リソースにアクセスするのに必要なロールが割り当てられていることが求められます。ユーザにセキュリティ ロールを割り当てる場合、個々のユーザに必要なセキュリティ ロールを個別に割り当てる方法と、ユーザを必要なセキュリティ ロールが割り当てられているグループのメンバーにすることで一括して割り当てる方法があります。

WebLogic Server の宣言的セキュリティ モデルでは、Web アプリケーション(WebLogic Workshop のプロジェクトに対応する WebLogic Server の Web アプリケーション)ではなくサーブレットがセキュリティ ゲートを制御します。これにより、開発者がアプリケーション内にセキュリティのためのコードを記述する必要がなくなります。また、アプリケーション自体を修正しなくてもアプリケーションのセキュリティ環境を変更できるため、セキュリティ コンフィグレーションの柔軟性も高まります。

注意 : WebLogic Workshop のアプリケーションをプロダクション モードの WebLogic Server にデプロイする場合は、アプリケーションにコンフィグレーションするグループおよびロールはデプロイ先の WebLogic Server インスタンス上にあらかじめ存在している必要があります。プロダクション サーバ上にグループとロールが存在しない場合、ユーザは必要なセキュリティ ロールを獲得できず、保護されたリソースにアクセスすることができません。WebLogic Server でグループおよびロールを作成する方法についての詳細は、WebLogic Server 7.0 のマニュアルのWebLogic セキュリティのコンフィグレーションまたは、このヘルプの VeriCheck.jws サンプルを参照してください。

Web リソースへのアクセスを制限する

Web リソースへのアクセスを制限するには、次の手順に従ってください。

Web リソースへのアクセス制限は、対象リソースの URL に対するアクセスを制限することで行います。サーブレットは、リソースに対するリクエストを受信すると、要求された URL が保護されているかどうかをチェックします。URL が保護されている場合、サーブレットはユーザ名とパスワードを要求してユーザの認証を試みます。ユーザが有効なユーザ名とパスワードを提供し、ユーザに必要なロールが付与されている場合、ユーザはそのリソースへのアクセスを許可されます。それ以外の場合は、ユーザはアクセスを拒否されます。

保護対象の Web リソースとそのリソースにアクセスするために必要なロールを定義するには、プロジェクトの web.xml ファイルで適切な XML 要素を指定します。ユーザにセキュリティ ロールを割り当てるには、weblogic.xml で適切な XML 要素を指定します。これらのファイル(web.xml および weblogic.xml)は、ともに WebLogic Workshop プロジェクトの WEB-INF ディレクトリに配置されています。以下のセクションでは、これらのファイルの XML 要素をコンフィグレーションして Web リソースを保護する方法を説明します。

注意 : web.xml または weblogic.xml の変更後、Web アプリケーションを WebLogic Server に再デプロイしないと変更内容は Web アプリケーションの動作に反映されません。WebLogic Workshop のアプリケーションをコマンド ライン ツールを使用して WebLogic Server にデプロイする方法については、Web サービスをデプロイするを参照してください。アプリケーションを再デプロイするには、コマンド ライン ツールを使う方法の他に、WebLogic Server を停止した後、再起動する方法もあります。

web.xml および weblogic.xml を使った Web リソースの保護についての詳細は、WebLogic Server 7.0 のマニュアルでWeb アプリケーション リソースへのアクセスの制限を参照してください。

web.xml および weblogic.xml ファイルのコンフィグレーションについての詳細は、WebLogic Server 7.0 のマニュアルでweb.xml デプロイメント記述子の要素およびweblogic.xml デプロイメント記述子の要素を参照してください。

保護対象の Web リソースを定義する

Web リソースを保護対象として宣言するには、web.xml コンフィグレーション ファイルに <security-constraint> 要素を挿入します。

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Order Submission</web-resource-name>
        <url-pattern>/ShoppingCart.jws/submitOrder</url-pattern>
        <http-method>POST</http-method>
        <http-method>GET</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>Customer</role-name>
    </auth-constraint>
</security-constraint>
許可のないユーザから保護する Web リソースの URL を指定するには、<url-pattern> 要素を使います。

<url-pattern> 要素を使うと、Web アプリケーション全体、Web サービス全体、または Web サービス内の個々のメソッドへのアクセスを制限できます。また、アスタリスク(*)を使うと、URL のグループを保護対象として定義できます。  

たとえば、ユーザが開発した myWebApplication というアプリケーションに、myWebServiceMethod という名前のメソッド持つ myWebService という名前の Web サービスが含まれている場合を考えてみましょう。次に示す <url-pattern> 要素は、myWebService 全体を許可のないユーザから保護することを宣言します。

<url-pattern>/myWebService.jws</url-pattern>

この例では、サーブレットは パスに /myWebService.jws を含むすべての受信リクエストをチェックするので、Web サービス全体が保護されます。

次に示す <url-pattern> 要素は、myWebServiceMethod という特定のメソッドを許可のないリクエストから保護することを宣言します。この例では、サーブレットはパスに /myWebService.jws/myWebServiceMethod を含むリクエストに対してのみ認証を要求し、Web サービス内のほかのメソッドに対しては認証を要求しません。

<url-pattern>/myWebService.jws/myWebServiceMethod</url-pattern>

次に示す <url-pattern> 要素は、Web アプリケーション全体を保護することを宣言します。つまり、サーブレットは Web アプリケーションの URL 空間に対するすべてのリクエストに対して認証を要求します。

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

注意 : アプリケーション全体を保護対象リソースとして宣言した場合、テスト ビューでアプリケーションをテストすることはできません。これは、サーブレットがテスト ビューからのアプリケーション呼び出しを許可されていないユーザからのリクエストとみなすためです。アプリケーション全体を保護対象リソースとして宣言する場合、アプリケーション開発の最後の段階で宣言するとよいでしょう。

Web リソースにアクセスするために必要なセキュリティ ロールを定義する

Web リソースを保護対象として宣言したら、次はそのリソースへのアクセスに必要なセキュリティ ロールを宣言します。必要なセキュリティ ロールを宣言するには、web.xml ファイルのデプロイメント記述子をコンフィグレーションします。

web.xml ファイルで <auth-contraint> 要素とその子要素の <role-name> 要素を使うと、リソースにアクセスするためにユーザがどのロールのメンバーでなければならないかを指定できます。次の例は、ある Web リソースへのアクセスを Administrator ロールが付与されたユーザのみに制限します。

<auth-constraint>
 <role-name>Administrators</role-name>
</auth-constraint>

必要なセキュリティ ロールを付与するユーザを定義する

保護対象の Web リソースとそのリソースにアクセスするのに必要なロールを宣言したら、個々のユーザとユーザのグループに対してロールを付与する最後の手順に進みます。weblogic.xml ファイルで <security-role-assignment> 要素とその子要素である <role-name> 要素および <principle-name> 要素を使うと、個々のユーザまたはユーザのグループにセキュリティ ロールを付与することができます。次の例は、ユーザ John と Jane にセキュリティ ロール Administrator を割り当てます。

<security-role-assignment>
 <role-name>Administrator</role-name>
 <principal-name>John</principal-name>
 <principal-name>Jane</principal-name>
</security-role-assignment>

宣言的セキュリティと EJB コントロール

セキュア化された EJB に EJB コントロールを介してアクセスする Web サービスは、自分自身もセキュア化されていなければなりません。Web サービスのセキュリティ要件は、EJB のセキュリティ要件と合致している必要があります。たとえば、EJB が Administrator ロールを付与されたユーザに対してのみアクセス可能な保護されたリソースとして宣言されている場合、その EJB を EJB コントロールを介して利用する Web サービスも Administrator ロールを付与されたユーザに対してのみアクセス可能なリソースとして宣言されていなければなりません。    

関連トピック

セキュリティ