<% Include("/hsphere/local/home/terraint/common.phps");%> Jakarta Jetspeed:ポータルサイト構築支援 in Java - Security Configuration
Apache Jakarta Jetspeed

Jakarta Jetspeed

ダウンロード

ドキュメント

コンポーネント

参加するには

Links (Web/JP)

日本語訳 (Translations)

オリジナル

Table of Contents


Security Overview

Jetspeed セキュリティサービスは、以下のコンポーネントのインターフェースに基づいています:

インターフェース 説明
PortalAuthentication Jetspeed ユーザの認証に必要な、ポータルとセキュリティプロバイダとの規約を定義します。
PortalAccessController ポータルでの権限のある行動に対するアクセスコントロールに必要な、ポータルとセキュリティプロバイダとの規約を定義します。
UserManagement ユーザ管理に必要な、ポータルとセキュリティプロバイダとの規約を定義します。
RoleManagement ロール管理に必要な、ポータルとセキュリティプロバイダとの規約を定義します。
GroupManagement グループ管理に必要な、ポータルとセキュリティプロバイダとの規約を定義します。
PermissionManagement パーミッション管理に必要な、ポータルとセキュリティプロバイダとの規約を定義します。
CredentialsManagement 証明書管理に必要な、ポータルとセキュリティプロバイダとの規約を定義します。

これらコンポーネントは、其々、組み込み可能です。 Jetspeed には、デフォルトで一つ以上の実装があります。 デフォルトの実装の殆どは、旧式のセキュリティオブジェクトモデル(Jetspeedバージョン1.3a3以前で提供:Turbineセキュリティモデル)をエミュレートする データベースセキュリティシステムに基づいています。 (データベースモデルは、Torqueスキーマから生まれています) しかし、JetspeedはもはやTurbineセキュリティサービスと結びついていません。 セキュリティサービスは、ポータルサーバで標準の基底セキュリティオブジェクトモデルを定義するためのインターフェースのセットで動きます。 それらのオブジェクトは:

インターフェース 説明
JetspeedUser ポータルシステムでの最小限のユーザ属性を定義します。
Role ポータルシステムでの最小限のロール属性を定義します。
Group ポータルシステムでの最小限のグループ属性を定義します。
Permission ポータルシステムでの最小限のパーミッション属性を定義します。

デフォルトのJetspeedの配置では、ユーザ・ロール・グループ・パーミッションのサンプルデータベースがそのままで使える形で提供されます。 このデータベースは、便利な事に、初めての経験の際に簡単に出来るよう、webappと共に作られます。 データベースはHypersonic SQLです。製品用システムでは、もっとしっかりしたデータベースに切り替えることをお奨めします。


Security Implementations

以下の実装は、インストールしてすぐに使えます:

デフォルト実装 説明
TurbineAuthentication (Default) 旧式Turbineデータベーススキーマに対するユーザ認証の為にTorqueを使います。
RegistryAccessController (Default) 重要なポータルのリソースへのアクセスをコントロール・定義する為にJetspeedセキュリティレジストリを使います。
TurbineAccessController 旧式Turbineデータベーススキーマで定義されるACLに対するアクセスに証明を与えるためにTorqueを使います。
NoSecurityAccessController 全てのアクセスコントロールのチェックでtrueを返します。つまり、常にアクセスを認めます。
TurbineUserManagement (Default) Torqueと旧式Turbineデータベーススキーマで、ユーザを管理します。
TurbineRoleManagement (Default) Torqueと旧式Turbineデータベーススキーマで、ロールを管理します。
TurbineGroupManagement (Default) Torqueと旧式Turbineデータベーススキーマで、グループを管理します。
TurbinePermissionManagement (Default) Torqueと旧式Turbineデータベーススキーマで、パーミッションを管理します。

サービスは組み込み可能です。JetspeedSecurity.defaultで設定されています:

#########################################
# Authentication Service                #
#########################################

services.PortalAuthentication.classname=org.apache.jetspeed.services.security.turbine.TurbineAuthentication

#########################################
# Authorization Service                 #
#########################################

services.PortalAccessController.classname=org.apache.jetspeed.services.security.registry.RegistryAccessController
#services.PortalAccessController.classname=org.apache.jetspeed.services.security.turbine.TurbineAccessController
#services.PortalAccessController.classname=org.apache.jetspeed.services.security.nosecurity.NoSecurityAccessController

#########################################
# User Management Service               #
#########################################

services.UserManagement.classname=org.apache.jetspeed.services.security.turbine.TurbineUserManagement

#########################################
# Role Management Service               #
#########################################

services.RoleManagement.classname=org.apache.jetspeed.services.security.turbine.TurbineRoleManagement

#########################################
# Group Management Service              #
#########################################

services.GroupManagement.classname=org.apache.jetspeed.services.security.turbine.TurbineGroupManagement

#########################################
# Security Cache Service                #
#########################################

services.SecurityCache.classname=org.apache.jetspeed.services.security.SecurityCacheImpl


Registry Access Control

PSML要素あるいはレジストリのセキュリティ要素で認証制約が定義されます。 制約はポートレットのリソースに適用されます。 セキュリティ制約があるリソースのタイプは:

  • 1. Portlet entries in the Registry
  • 2. Portlet entries in PSML
  • 3. Portlet sets in PSML

両者ある場合、セキュリティタグは、以下のように定義されます:

  <security-ref parent='some-security-definition'/>

Where parent is a unique identifier, specific to the Security service provider, identifying a security constraint. parent属性は必須です。ポートレットレジストリエントリの例を挙げます:

<portlet-entry type="instance" name="VerySecurePortlet" >
  <security-ref parent='top-secret'/>
</portlet-entry>

PSML・ポートレットセット・ポートレットエントリの例を挙げると:

    <portlets>
        <security-ref parent="user-only"/>

        <entry parent="HelloSecureWorld">
              <security-ref parent='super-users-only'/>
       </entry>
     </portlets>

デフォルトでのJetspeedのセキュリティサービスは、Jetspeedのレジストリに セキュリティ制約を格納します。 新規セキュリティ制約は、XREGファイルとしてJetspeedに配置されます。 それらはスタンドアローンであり、portlet-entryのような高位レジストリ要素です。 制約は、妥当なロール・ユーザ・リソース上でアクセスを許可している動作をリスト化します。 以下のテーブルで、セキュリティエントリで妥当な属性と要素を明らかにしています:

Security Ref 基底属性
属性 説明
name 必須。セキュリティ参照の一意の名前

Security Ref 基底要素
要素 説明
access 0〜n の、数値のaccess要素が設定されます。要素が指定されていなければ、全てのユーザのアクセスが拒否されます。

Access 属性
属性 説明
action アクセスをコントロールする動作を設定します。'*'の場合は、全ての動作が対象です。

Access 要素
要素 説明
allow-if どのロールが、関連した動作のアクセス承認があるかを設定します。設定されていない場合、その関連した動作に対し全てのユーザがアクセス拒否されます。

Allow-if 属性
属性 説明
role セキュリティ制約に必要なセキュリティロールを設定します。

以下、例を挙げます:

<registry>
    <security-entry name="admin-only">
        <meta-info>
            <title>Admin-only</title>
            <description>Full access to user with the admin role.</description>
        </meta-info>
        <access action="*">
            <allow-if role="admin"/>
        </access>
    </security-entry>
    <security-entry name="user-only">
        <meta-info>
            <title>User-only</title>
            <description>Full access to users with the user role.</description>
        </meta-info>
        <access action="view">
            <allow-if role="user"/>
        </access>
    </security-entry>


Extending Jetspeed User

自身のデータベース実装での余分な列(訳注:データベースのカラム・フィールドのこと)をサポートするために Jetspeedユーザを拡張が必要となる場合がよくあります。 以下、そのための手順を挙げます:

  • 1. build/torque/security_schema.xmlを書き換え、Torque XML スキーマに新規列(カラム)を追加します。
  • 2. 特定のデータベースへのDDLを生成する為に、build/torque/build.propertiesを書き換えます。(database=)
  • 3. 指定したDBに対するDDLスクリプトが自動生成されるよう、Jetspeedをリビルドし、OMオブジェクトを生成します。OMオブジェクトは、org/apache/jetspeed/om/security/turbineパッケージに生成されます。 対象パッケージは、build/torque/build.propertiesで設定可能です。DDLスクリプトはsrc/sql/security-schema.sqlに書かれます。
  • 4. JetspeedUserを(例えば)MyUserに拡張し、新規列(カラム)へのアクセスが必要な場合はいつでも、それをキャストします。

Torqueスキーマ修正の概要については、Torque Schemasをご覧下さい。


Configuring Default Security Constraints

新規ポーたるリソースが生成された際、自動的にデフォルトのセキュリティ制約を割り付けることが出来ます。以下の設定(JetspeedSecurity.properties)は、この機能をコントロールします(ここにあるのはデフォルト値です):

services.PortalToolkit.default.user.security.ref = owner-only
services.PortalToolkit.default.anon.security.ref = anon-view_admin-all
services.PortalToolkit.default.role.security.ref =
services.PortalToolkit.default.group.security.ref =

例えば、新しいペインをユーザが作成した際、このペインへのsecrity refは自動的に"owner-only"にセットされます。新規ポートレットが追加された場合も同様に"owner-only"にセットされます。また、"-- Default --"を選択することでも、security ref を"owner-only"にする事が出来ます。 匿名プロフィールを扱うには注意が必要です。というのも、"owner-only"はここでは適切なセキュリティ制約ではないからです。



Copyright © 1999-2005, Apache Software Foundation
Translated into Japanese by Tetsuya Kitahata , powered by Terra-International, Inc.
<% orig();%>