|
開発者は、Workshop for WebLogic を使用して、ユーザ プロファイルの追加や編集を行う JSP タグおよびコントロールを作成することができます。ユーザ プロファイルは、ユーザ名と、ユーザに関して収集および格納される追加のプロパティから構成されます。これらのプロパティを使用すると、ポータルでユーザが行う操作をパーソナライズできます。
プロパティは、個人データ、作業関連データ、場所を表すデータ、またはユーザを論理的に分類するその他のデータで構成できます。たとえば、Workshop for WebLogic では、性別、雇用日、電子メール アドレスなどのプロパティを格納する従業員というプロパティ セットを作成できます。
プログラムによってユーザ プロファイルの作成、プロファイルのデフォルト プロパティ値の編集およびプロパティ値の暗号化を有効にするために、Workshop for WebLogic を使用する必要があります。
| 注意 : | ユーザ データを暗号化するかどうかを決定し、暗号化のさまざまな方法の詳細について理解を深めるには、「データ暗号化の計画」を参照してください。データを暗号化する手順については、「ユーザ プロファイル プロパティ セットの作成」を参照してください。ユーザ パスワードを暗号化する手順については、「外部ユーザ ストアからのプロパティの使用」を参照してください。 |
管理者は、プロファイルのプロパティ値を Administration Console で編集できます。詳細については、「ユーザ プロファイル プロパティの値の編集」を参照してください。
ユーザがポータルにログインするときに、ポータルはプロパティ値にアクセスし、設定したパーソナライゼーション ルールに基づいて、パーソナライズされたコンテンツ、電子メール、入力済みのフォーム、および割引にその値を適用できます。詳細については、『対話管理ガイド』を参照してください。
開発者は以下のツールを使用して、プログラムによってユーザ プロファイルのデフォルトのプロパティ値を作成および編集することができます。
createProfile JSP タグを使用して、ユーザ プロファイルを追加するためのポータル JSP タグを作成します。その他の JSP タグを使用すると、ユーザ プロファイルの取得およびそのプロパティの追加と編集が可能になります。createProfile アクションを使用して、ユーザ プロファイルを追加します。ユーザ プロバイダ コントロールのその他のアクションを使用すると、ユーザ プロファイルの取得およびそのプロパティの追加または編集が可能になります。プロファイル コントロールを使用してユーザ プロファイルを取得し、プロパティ コントロールを使用してプロパティを作業メモリに追加します。その後、Rules Executor コントロールを使用してユーザ プロファイルのプロパティの評価およびフィルタを行い、評価に応じたアクションを開始します。com.bea.p13n.usermgmt.profile.ProfileFactory Java クラスと直接連携してユーザ プロファイルを作成します。ユーザ プロパティは、ProfileWrapper オブジェクトを直接呼び出して変更できます。Java クラスの詳細については、「Javadoc」を参照してください。
ユーザ プロファイルは、使用できるすべてのユーザ プロパティ セットからのユーザのプロパティ値の集合です。ユーザ プロファイルにある個々のメタデータが、ユーザ プロパティと呼ばれます。ユーザ プロファイル プロパティ セットは、格納するプロパティを整理し、特定の目的を持つプロパティ グループに名前を付けるための便利な方法を提供します。プロパティを作成し、パーソナライゼーション、委託管理、または訪問者の資格に関するルールの定義に使用することができます。
ユーザ プロパティは、ユーザの電話番号や電子メール アドレスなどの静的に定義されるプロパティから、ユーザの Web サイトのトラッキング情報などの動的に作成され、維持されるプロパティまで多岐にわたります。「パーソナル」というプロパティ セットには、年齢、性別、結婚歴、住所などのプロパティを含めることができます。「嗜好」という別のプロパティ セットには、趣味、好きな色、興味のあるニュースなどのプロパティを含めることができます。
Workshop for WebLogic で、ユーザ プロファイルの作成およびプロファイルのデフォルト値の編集を行います。プロファイルの値は、Workshop for WebLogic または Administration Console で編集できます。
WebLogic Portal には、共通のプロパティを持つ、CustomerProperties.usr というデフォルトのユーザ プロファイル プロパティ セットが用意されています。
| 注意 : | アプリケーション定義のプロパティ セットを作成し、ユーザまたはグループ以外のエンティティのプロファイル データを格納することもできます。これらのエンティティには、コミュニティおよび WSRP (Web Services for Remote Portlets)、またはアプリケーションのプログラマによって作成されたカスタム エンティティが含まれます。このタイプのプロパティ セットの作成手順については、『対話管理ガイド』を参照してください。 |
WebLogic Workshop では、ユーザ プロファイルおよびプロパティ セットを作成することができます。プロファイルのデフォルト値は、Workshop for WebLogic または Administration Console で編集できます。
ユーザ プロファイルのプロパティ セットを作成するには、以下の手順を実行します。
| ヒント : | メニューをカスタマイズして、[新規] メニューの選択肢として [プロパティ セット] を表示することができます。詳細については、『ポータル開発ガイド』を参照してください。 |
.usr ファイル拡張子を保持します。たとえば、SalesRegion.usr となります。| ヒント : | 単独でデータを暗号化するカスタムの UUP を使用する場合、[暗号化の有効化] チェック ボックスを選択しないでください。このオプションを選択すると、データが 2 回に暗号化と復号化し、パフォーマンスに影響をします。UUP で暗号化を設定するには、UUP ドキュメントを使用します。指定したプロパティ セットのみが暗号化されます。アプリケーション用のデータを暗号化するため、このメソッドを使用するかどうかを決定するには、「データ暗号化の計画」を参照してください。ポータル アプリケーションまたはドメイン全体で、暗号化されたデータを共有する場合、暗号化キーが 1 つのカスタムの UUP から別のカスタムの UUP に移動できます。詳細については、「カスタム UUP 間の暗号化キーの転送」を参照してください。 |
enable-encryption="true” 行が .usr ファイルの最初の行に追加されます。たとえば、<propertyset is-complete="true" enable-encryption="true".| 注意 : | [暗号化の有効化] チェック ボックスを有効にしても、Workshop for WebLogic に入力された(最終的、.usr ファイルに保持される)いくつかのデフォルト プロパティ値は暗号化されません。 |
「ユーザ プロファイル プロパティ セットの作成」にある手順に従ってプロパティ セットを作成したら、プロファイルにプロパティを追加してユーザ情報を取得することができます。
ユーザ プロファイルのプロパティ セットにプロパティを追加するには、以下の手順を実行します。
図 5-3 は、プロパティ セット用のプロパティ タイプを示します。
java.sql.Timestamp にします。選択したデータ型によって、[値] フィールドを編集する際のダイアログ ボックスの表示が異なります。たとえば、Boolean データ型のプロパティは自動的に単値かつ制限付きに設定されます。[データ型] を編集するとデータ型が変更されるため、[値] フィールドに入力されていた値は削除されます。
図 5-4 は、多値かつ制限付きタイプに 3 つの販売地域 (Americas、APAC、および EMEA) を反映させる方法を示しています。この販売地域プロパティを使用して、パーソナライズされたコンテンツを持つ販売員を対象とすることができます。
| 注意 : | [データ型]、[選択モード]、[値の範囲] フィールドに対して変更を加えると、使用可能な値の数が変更されるため、[値] フィールドに入力されている値がすべて置き換わります。 |
[値] フィールドを使用して制限付きタイプの値を入力するか、制限なしタイプのデフォルト値を設定します。省略記号アイコン ([...]) をクリックして値を入力します ([値の範囲] フィールドで [制限付き] を選択した場合は、表示される [プロパティ値の入力] ダイアログ ボックスに値を入力し、入力するたびに [追加] をクリックします。値をすべて入力したら、[OK] をクリックします。[値の範囲] フィールドで [制限なし] を選択した場合は、[プロパティ値の入力] ダイアログ ボックスに値を入力し、[OK] をクリックします。[データ型]、[選択モード]、または [値の範囲] を変更すると、フィールドに入力された値はすべて削除されます)。
図 5-5 に示すように、プロパティ エディタに入力した値は、ユーザ プロファイル エディタに表示されます。
| 警告 : | プロパティ コントロールを使用して、プログラムによってプロパティを作成および管理することもできますが、コントロールによって作成されたプロパティは Administration Console には表示されません。これらのプロパティは、プログラムによって変更および更新する必要があります。 |
ユーザ データに対して複数の UUP を使用し、ポータル アプリケーションまたはドメイン全体で暗号化されたデータを共有する場合、暗号化キーを一つの UUP から別の UUP に転送する必要があります。3DES 対称アルゴリズムでは、同じキーを使用してデータの暗号化と復号化します。
プロファイル マネジャーを使用してプロファイル データを暗号化する場合、管理対象暗号化キーを別のポータル アプリケーションまたはドメインに転送する必要があります。プロファイル マネジャーが、ポータル アプリケーションのデプロイメント記述子とプランを使用して暗号化された個々のプロパティ セット用の暗号化キーを管理するので、この転送が必要です。暗号化キーを転送することにより、すべてのドメインとアプリケーションのために同じ暗号化キーを使用することが保証されます。
これは、アプリケーション用のデータを暗号化するための最良の方法であるかどうかを決定するには、「データ暗号化の計画」を参照してください。
p13n-profile-config.xml ファイルで、パスワードを作成します。これは、暗号化されたデータを転送するための、最も簡単な方法ですが、ユーザ データに対して最も強力な暗号化を提供するとはいえません。Administration Console でのパスワード設定については、「LDAP UUP および透過的なフェイルオーバのコンフィグレーション」の「手順 10」を参照してください。p13n-profile-config.xml ファイルでコンフィグレーションされたパスワードを検索します。パスワードが検索された場合、暗号化キーはパスワードから生成されます。パスワードが検索されない場合、プロファイル マネジャーは暗号化キーをランダムに生成して、WebLogic Server の DefaultCredentialMapper に格納します。
別のアプリケーションからユーザ プロファイル データを再使用するために、暗号化キーを転送するには、以下の手順を実行します。
.ldif ファイルです。dn: cn=type@E@Fwlp@G@M@OEntApp@EqaApp@M@OWebapp@E@M@OResource@EUUP.
@K@M@OCapability@E.EncryptionKey-Alias,ou=CredentialMaps,ou=
@realm@,dc=@domain@
objectClass: passwordCredentialMap
moduleName: null
cn: type@E@Fwlp@G@M@OEntApp@EqaApp@M@OWebapp@E@M@OResource@EUUP.
@K@M@OCapability@E.EncryptionKey-Alias
applicationName: null
principalName: myEncryptionkeyAlias
wlsCreatorInfo: null
wlsCollectionName: null
resourceName: type=<wlp>, EntApp=qaApp, Webapp=,S
Resource=UUP.myUUPadapterName, Capability=
principalPassword: ezNERVN9NmkyVjVQcjA1SllKbldZNmtxU0BUcjQwblFPdGxnY
UtnW Dh5U1 BQNXRFcGZ2T1pCQFRQR3dRbk10dFZ2QWU4cU1TekxuRGVjT21jWjI2c1l
GaGhZQ FRAVVliZ29wODhwVUdKV2pOd09BMkBVR3BXTThBZmZuQjVUNzg5bGFVRmxmS
1NvaVJEMDMweHlMeVVZQEU=
dn 用のアプリケーション名を変更します。たとえば、M (OEntApp)EqaApp を M (OEntApp)E<yourAppName> に変更します。cn 用のアプリケーション名を変更します。たとえば、M (OEntApp)EqaApp を M (OEntApp)E<yourAppName> に変更します。 resourceName用のアプリケーション名と UUP アダプタ名を変更します。たとえば、type=<wlp>, EntApp=qaApp, Webapp=, Resource=UUP.myUUPadapterName, Capability= を type=<wlp>, EntApp=<yourAppName>, Webapp=, Resource=UUP.<yourUUPadapterName>, Capability= に変更します。 *.usr)および (p13n-profile-config.xml ファイルでの) UUP アダプタ コンフィグレーションを対象となるポータル アプリケーションまたはドメインにコピーします。
Workshop for WebLogic を使用して、ユーザ プロファイルおよびプロファイルのデフォルト値を作成できます。プロファイルの値は、Workshop for WebLogic または Administration Console で編集できます。Administration Console でプロパティ セットの値を編集する手順については、「ユーザ プロファイル プロパティの値の編集」を参照してください。
開発者は、Workshop for WebLogic のユーザ プロファイル エディタを使用して、ユーザ プロファイルの作成およびプロファイルのプロパティの追加を行います。その後、各ユーザ プロファイルに含まれるプロパティ値およびそのデフォルト値を編集できます。
Workshop for WebLogic でプロパティおよびその値を変更するには、以下の手順を実行します。
| ヒント : | プロパティ値は Administration Console で編集できます。 |
JSP タグのセットによって、プロパティ セット データに簡単にアクセスできます。
これらのタグの詳細については、「JSP タグの Javadoc」を参照してください。
<profile:getProperty> JSP タグは、特定のプロパティ セットのプロパティ値を取得します。<profile:setProperty> JSP タグは、セッションの現在のプロファイルまたは匿名ユーザ プロファイルのいずれかのプロパティ値を更新します。
通常は、<profile:getProfile> タグの呼び出し後に <profile:getProperty> タグを使用して、セッションが使用するプロファイルを取得します。<profile:getprofile> JSP タグは、ユーザ プロファイルおよびそのプロパティを取得します。<profile:getProperty> および <profile:setProperty> JSP を使用することで、開発者は多数のユーザのプロパティを取得し、迅速に編集することができます。<profile:getProperty> タグの使用前に <profile:getProfile> タグを使用しない場合は、匿名ユーザ プロファイルから特定のプロパティ値が取得されます。
Java クラスの詳細については、「JSP タグの Javadoc」を参照してください。
コード リスト 5-1 のコード サンプルに示されているように、ページ フローで <profile:getProfile> JSP タグを使用して、認証済みユーザ プロファイルを取得することができます。
<%@ page import="com.bea.p13n.usermgmt.SessionHelper"%>
<%@ taglib uri="http://www.bea.com/servers/p13n/tags/usermanagement"
prefix="profile"%>
<%@ taglib uri="netui-tags-databinding.tld" prefix="netui-data"%>
<%@ taglib uri="netui-tags-html.tld" prefix="netui"%>
Profile is: [<code><%= SessionHelper.getProfile(request) %></code>]<br>
<%-- このタグは、ユーザが認証済みの場合に機能する。
<profile:getProfile profileKey="<%=request.getUserPrincipal().getName()%>"
profileId="profile"/>
Profile is: [<code><%= profile %></code>]<br>
<%-- 通常は、JSP ではなくページ フローの中でこの処理を行う。
<netui-data:declareControl controlId="profileControl"
type="com.bea.p13n.controls.profile.UserProfileControl"/>
<netui-data:callControl resultId="getProfileFromRequestResult"
controlId="profileControl" method="getProfileFromRequest">
<netui-data:methodParameter
value="{request}"></netui-data:methodParameter>
</netui-data:callControl>
Profile is: [<code><netui:label value="
{pageContext.getProfileFromRequestResult}"></netui:label> </code>]<br>
コード リスト 5-2 のコード サンプルに示されているように、ユーザが登録済みの場合は、セッションを参照せずにそのユーザのプロファイルを取得することができます。セッション オブジェクトへのアクセス権がない場合は、この方法が便利です。
| ヒント : | このプログラムに基づくテクニックを使用してユーザのプロファイルを取得する場合、ユーザがログインしていることと、認証済みユーザであることが必要です。ログインを実行するために com.bea.p13n.security.Authentication.login() が呼び出されると、ユーザ プロファイルが自動的に作成されます。WebLogic Server の weblogic.servlet.security.ServletAuthentication.login() メソッドが呼び出されることもできます。ただし、続いてアクセスした場合 (一般的に最初のページの更新の後)、ユーザ プロファイルが作成されます。この引き続きのアクセスをする前に、ユーザ プロファイルを取得しようとした場合、ProfileNotFound 例外が発生します。 |
import com.bea.p13n.usermgmt.profile.ProfileFactory;
import com.bea.p13n.usermgmt.profile.ProfileNotFoundException;
import com.bea.p13n.usermgmt.profile.ProfileWrapper;
import java.rmi.RemoteException;
public class MyHelper
{
public static String helperMethod(String username)
{
try
{
ProfileWrapper profile =
ProfileFactory.getProfile(username,null);
// ここで何らかの処理を行う
return profile.toString();
}
catch (RemoteException ex)
{
}
catch (ProfileNotFoundException ex)
{
}
return null;
}
匿名ユーザおよび追跡された匿名ユーザの場合は、セッションからプロファイルを取得する必要があります。匿名プロファイルには ID がありません。追跡された匿名プロファイルには ID がありますが、認証に使用できる有効なものではありません。ユーザのプロファイル タイプに応じて、安全にユーザの ID を取得する方法については、コード リスト 5-3 を参照してください。このコード サンプルでは、現在の ProfileWrapper を取得し、ラッパーに関連するユーザ名を取得します。
<%@ page import="com.bea.p13n.usermgmt.SessionHelper"%>
Profile Id is: [<code><%= SessionHelper.getUserId(request) %></code>]<br>
開発者は、プロパティ コントロールの getProperty アクションおよび setProperty アクションを使用して、ユーザによるプロパティ セットのプロパティ値の取得、およびセッションの現在のプロファイルまたは匿名ユーザ プロファイルのいずれかのプロパティ値の更新を許可します。
| 警告 : | このコントロールによって作成されたプロパティは、WebLogic Portal Administration Console には表示されません。これらのプロパティは、プログラムを使用して編集および更新する必要があります。 |
プロパティ コントロールおよびそのプロパティの使用の詳細については、「Javadoc」を参照してください。
コード リスト 5-4 は、プロパティ コントロールの setProperty アクションを使用して ProfileWrapper を編集する方法を示しています。コード サンプルでは、ユーザが好みの色を設定できるようにするために、コントロールを使用してフォームを表示するページ フロー (および関連する JSP) の例を示します。この例では、ユーザ プロファイル プロパティ セットのファイルである Generalnfo.usr が data プロジェクトの \userprofiles フォルダに存在している必要があります。また、単値、制限付きタイプで、テキスト プロパティ FavoriteColor が定義されている必要があります。詳細については、Workshop for WebLogic のヘルプを参照してください。
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="netui-tags-databinding.tld" prefix="netui-data"%>
<%@ taglib uri="netui-tags-html.tld" prefix="netui"%>
<%@ taglib uri="netui-tags-template.tld" prefix="netui-template"%>
<netui:html>
<body>
<netui:form action="setColor">
<table>
<tr valign="top">
<td>Favorite Color:</td>
<td>
<netui:select dataSource="{actionForm.color}"
defaultValue="{pageFlow.usersColor}"
optionsDataSource="{pageFlow.possibleColors}">
</netui:select>
</td>
</tr>
</table>
<br/>
<netui:button value="Set Color" type="submit"/>
</netui:form>
</body>
</netui.html>
開発者は、ProfileWrapper オブジェクトを直接呼び出すことによって、ユーザ プロファイル プロパティの値を変更することができます。詳細については、「Javadoc」を参照してください。
実行時の ProfileWrapper サクセサをコンフィグレーションして、ユーザが継承するユーザまたはグループ プロパティのセットを指定する必要があります。ProfileWrapper は、初期化に使用されるプロファイル ID に基づいて適切な ProfileManager セッション Bean にアクセスできる軽量オブジェクトです。ProfileManager には、getAllProfileNames メソッドと listAllProfiles メソッドがあります。listAllProfiles(int pageSize) メソッドは、すべてのユーザ プロファイルまたはグループ プロファイルを効率的に取得します。詳細については、「Javadoc」を参照してください。
Workshop for WebLogic を使用すると、プロパティ セットから個々のプロパティを削除したり、プロパティ セット全体を削除することができます。
プロパティ セットから個々のプロパティを削除するには、以下の手順を実行します。
また、ページ フローのプロパティ コントロールで <profile:removeProperty> JSP タグまたは removeProperty アクションを使用すると、既存のプロパティまたはユーザのプロファイルを削除することができます。詳細については、「Javadoc」を参照してください。
UUP を作成して外部ユーザまたはグループ プロパティにアクセスしている場合は、これらのプロパティを使用して、パーソナライゼーション、委託管理、または訪問者の資格に関するルールを定義することができます。
外部ユーザ ストア (たとえば、openLDAP サーバ) のプロパティにアクセスするための UUP を作成後、これらの外部プロパティにアクセスするには、WebLogic Portal の JSP タグ、コントロール、または API を使用する必要があります。これらの外部プロパティは、Administration Console ではまだアクセスすることができません。
パーソナライゼーション、委託管理、または訪問者の資格に関するルールの定義にこれらのプロパティを使用する場合は、Administration Console にこれらの外部プロパティを表示する必要があります。
| 注意 : | 外部ユーザ ストアから表示したプロパティが読み込み専用の場合は、Administration Console でこれらのプロパティを更新することができません。これらのプロパティを書き込み可能にするには、カスタム UUP を書き込み可能にする必要があります。 |
外部ユーザ ストアからプロパティを使用するには、以下の手順を実行します。
PropertyMapping の名前と一致させる必要があります。プロパティ セットの名前を検索するには、以下の手順を実行します。META-INF/p13n-profile-config.xml ファイルを開きます。<!-- User Profile Manager --> セクションで、以下のような外部ユーザ ストア用の名前エントリを探します。<property-adapter>
<name>MyLdapUUP</name>
<property-mapping>MyExternalPropertySet</property-mapping>
<ejb-jndi>my_uup.jar#ExternalEntityPropertyManager</ejb.jndi>
</property-adapter>
<property-mapping>要素には、新しいプロパティ セットの名前を指定できます。名前は、大文字と小文字が区別されます。たとえば、プロパティ セットは、MyExternalPropertySet.usr と言う名前が付けられます。
newLdap.usr という名前を付けます。 | ヒント : | ポータル アプリケーションをプロダクション環境にデプロイした後で、Workshop for WebLogic でユーザ プロファイルのプロパティを変更した場合、変更を実行中のサーバに移行する必要があります。詳細については、『プロダクション業務ガイド』を参照してください。 |
weblogic.security.Encrypt ユーティリティを使用してパスワードを暗号化できます。(これは、アプリケーション用のデータを暗号化するための最良の方法であるかどうかを決定するには、「データ暗号化の計画」を参照してください。)Administration Console でパスワードを設定する手順については、「LDAP UUP および透過的なフェイルオーバのコンフィグレーション」の手順 10 を参照してください。 | 注意 : | p13n データベースに格納されているプロファイル データを暗号化すると、データベース管理者はユーザ プロファイル データベース内のデータを表示することはできません。WebLogic Portal の以前のリリースでは、デフォルトはクリア テキストでした。つまり、データベース管理者がユーザ プロファイル データを表示することができました。 |
|