WebCenter Sitesでは、USER
タグによる認証機能、DIR
タグによるユーザー・プロファイル管理が用意されており、アクセス制御リスト(ACL)によりデータベース表およびレンダリングされたページのセキュリティが強化されています。これらのユーザー管理とセキュリティのメカニズムを使用して、ユーザーを管理し、配信システムおよびWebCenter Sitesの開発システムと管理システムに対する訪問者のアクセスを制御します。
この章には次の項が含まれます。
ディレクトリ・サービスAPIは、WebCenter Sitesシステムで認証情報、ユーザー情報などが格納されているディレクトリ・サーバーへの接続を有効化します。
WebCenter Sitesは3つのディレクトリ・サービスのプラグインを配信しており、そのうちの1つはWebCenter Sitesシステムがインストールされたときにインストールされています。
WebCenter Sitesディレクトリ・サービス・プラグイン: ネイティブのWebCenter Sitesユーザー管理表(SystemUsers
表およびSystemUserAttrs
表)を使用します。
LDAPプラグイン: 任意のJNDIサーバーをサポートします。
NTプラグイン: ユーザー資格証明とログイン名はNTディレクトリから取得しますが、その他のすべてのユーザー情報はSystemUserAttrs
表から取得します。
プラグインはWebCenter Sitesシステムのインストール時にインストールされ、構成するにはdir.ini
ファイルでプロパティを設定します。ユーザー管理設定の構成の詳細は、『Oracle Fusion Middleware WebCenter Sites管理者ガイド』を参照してください。
この項の内容は、次のとおりです。
ディレクトリのエントリは、割り当てられた属性(特にユーザーおよびグループ・タイプのエントリ)を備えた名前付きオブジェクトです。
ユーザー・タイプ・オブジェクトには、識別名および一連の属性として一般名、ユーザー名、パスワード、電子メールなどが備わっています。
WebCenter Sites ACLと同様、グループ・タイプ・オブジェクトにも識別名と一連の属性があります。
名前は関連付けられている階層を反映しています。ディレクトリ実装での移植性を確保するために、名前は不透明な文字列として処理する必要があります。
一部のディレクトリ・データベースは、階層構造を使用してエントリを編成します。WebCenter Sitesのディレクトリ・サービスAPIでは、エントリの属性と階層内でのその場所は個別になっています。その結果、エントリの属性の取得によってその子の情報は発生しません。
階層に対するサポートは、基礎となるディレクトリの実装に応じて異なります。たとえば、LDAPディレクトリは階層構造をサポートしますが、WebCenter Sitesのネイティブ・ディレクトリ・データベースは階層構造をサポートしません。
ディレクトリ実装での移植性を確保するために、コードは階層データのサポートを想定していません。
グループ階層は、内部のWebCenter Sitesの権限に影響を及ぼしません。
WebCenter Sitesのディレクトリ・サービスAPIは、参照整合性を実行しません。ディレクトリ・タグを持つユーザーを削除する場合、アプリケーションでは、関連付けられたグループからの最初のユーザー削除によってグループ・メンバーシップも確実に削除される必要があります。
メンバーがグループに追加されるたびに、JNDI実装では、addmember
タグに渡される名前とは関係なく、uniquemember
属性の値に対して完全に識別される名前が作成されます。
WebCenter Sitesでは、XMLおよびJSPの両バージョンで、ディレクトリ・サービスAPIの起動に使用できるDIR
タグ・ファミリが配信されます。
DIR
タグは、次のとおりです。
タグ | 説明 |
---|---|
|
属性を既存のエントリ(ユーザーまたはグループのいずれか)に追加します。 |
|
メンバーをグループ(通常はユーザー)に追加します。 |
|
リスト変数の特定の親に対する子エントリを取得します。 |
|
ディレクトリ・エントリを作成します。 |
|
ディレクトリ・エントリを削除します。 |
|
リスト変数の特定のエントリに対する属性値を取得します。 |
|
指定されたグループのメンバーのリストを作成します。 |
|
エントリ(グループまたはユーザーのいずれか)が属するすべてのグループのリストを作成します。 |
|
ディレクトリ内のすべてのユーザーのリストを返します。 |
|
エントリの属性値を削除します。 |
|
グループのエントリを削除します。 |
|
エントリ(ユーザーまたはグループのいずれか)の属性値を置換します。 |
|
指定された検索基準と一致するエントリのディレクトリを検索します。 |
ディレクトリがLDAP、WebCenter Sitesのみ、またはその他のディレクトリ・サーバーのいずれを実装しているかに関係なく、DIR
タグで記述するコードは酷似しています。
これらのタグの詳細は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。コード・サンプルは、第31.1.5.4項「ディレクトリ・サービスのコード・サンプル」を参照してください。
一部のWebCenter Sitesディレクトリ・サービスのタグは、データベースに情報を書き込みます。データベース管理者が、データベースへのユーザー情報の追加など、Webサイトへの書込み操作をすべて処理している場合、ディレクトリ・タグの使用を読取り専用の操作に制限します。
このポリシーによって、サードバーティのディレクトリ管理ツールとの同期化に関する問題が回避されます。
読取り専用操作については、この項で説明します。資格証明と現在の認証済ユーザーの読取り権限を使用して、操作を実行します。
一部のディレクトリ・サーバーの制限のため、組織の最上位レベルからの検索は許可されていません。移植性の問題を回避するために、DIR.SEARCHタグのコンテキスト属性を必ず指定してください。
ユーザーのルックアップには、通常、次の2つの手順を実行します。
エントリ名を取得するには、userid
のDIR.SEARCH
をコールします。
問題のユーザーの属性を取得するには、DIR.GETATTRS
をコールします。
ユーザーのリストを作成するには、次の3つの方法のいずれかを使用することをお薦めします。
小規模のユーザー・データベースの場合、DIR.LISTUSERS
タグを使用します。これは、peopleParent
プロパティに従ってすべてのユーザーのリストを再帰的に作成します。このタグの使用は、より大規模なユーザー・データベースでは非効率的です。
より大規模なユーザー・データベースの場合、階層の移動にはDIR.CHILDREN
タグを使用します。DIR.CHILDREN
タグはグループ・タイプには最適ですが、ユーザー・タイプには適していません。
フラットな階層を持つユーザー・データベースの場合、検索結果を絞り込みます。
次のJSPコード・サンプルは、可能なディレクトリ操作を示しています。
<% String sMainTestUserName = "ContentServer"; String sMainTestUserPW="FutureTense"; String sPeopleParent = ics.GetProperty("peopleparent", "dir.ini", true); String sGroupParent = ics.GetProperty("groupparent", "dir.ini", true); String sUsername = ics.GetProperty("username", "dir.ini", true); String sCommonName = ics.GetProperty("cn", "dir.ini", true); IList mylist; %> <user:su username='<%=sMainTestUserName%>' password='<%=sMainTestUserPW%>'> <H2>List All Users</H2> <ics:clearerrno/> <dir:listusers list='mylist'/> <br> <b>dir:listusers errno: <ics:getvar name='errno'/></b> <ics:listloop listname='mylist'> <br><ics:listget listname='mylist' fieldname='NAME'/> </ics:listloop> <H2>Look Up the ContentServer User by Username</H2> <ics:clearerrno/> <dir:search list='mylist' context='<%=sPeopleParent%>'> <dir:argument name='<%=sUsername%>' value='ContentServer'/> </dir:search> <br><b>dir:search errno: <ics:getvar name='errno'/></b> <% mylist = ics.GetList("mylist"); if(mylist.numRows() != 1) { out.print("<br>Error finding entry."); } mylist.moveTo(1); ics.SetVar("ContentServerDn", mylist.getValue("NAME")); %> <H2>Show ContentServer Attributes</H2> <ics:clearerrno/> <dir:getattrs list='mylist' name='<%=ics.GetVar("ContentServerDn")%>'/> <br><b>dir:getattrs errno: <ics:getvar name='errno'/></b> <ics:listloop listname='mylist'> <br> <ics:listget listname='mylist' fieldname='NAME'/>= <ics:listget listname='mylist' fieldname='VALUE'/> </ics:listloop> <H2>Show Group Memberships for ContentServer</H2> <ics:clearerrno/> <dir:groupmemberships name='<%=ics.GetVar("ContentServerDn")%>' list='mylist'/> <br><b>dir:groupmemberships errno: <ics:getvar name='errno'/></b> <ics:listloop listname='mylist'> <br> <ics:listget listname='mylist' fieldname='NAME'/> </ics:listloop> <H2>Lookup the SiteGod Group by CommonName</H2> <ics:clearerrno/> <dir:search list='mylist' context='<%=sGroupParent%>'> <dir:argument name='<%=sCommonName%>' value='SiteGod'/> </dir:search> <br><b>dir:search errno: <ics:getvar name='errno'/></b> <% mylist = ics.GetList("mylist"); if(mylist.numRows() != 1) { out.print("<br>Error finding entry."); } mylist.moveTo(1); ics.SetVar("SiteGodDn", mylist.getValue("NAME")); %> <H2>Show SiteGod Attributes</H2> <ics:clearerrno/> <dir:getattrs list='mylist' name='<%=ics.GetVar("SiteGodDn")%>'/> <br> <b>dir:getattrs errno: <ics:getvar name='errno'/></b> <ics:listloop listname='mylist'> <br> <ics:listget listname='mylist' fieldname='NAME'/>= <ics:listget listname='mylist' fieldname='VALUE'/> </ics:listloop> <H2>Show SiteGod Group Members</H2> <ics:clearerrno/> <dir:groupmembers name='<%=ics.GetVar("SiteGodDn")%>' list='mylist2'/> <br> <b>dir:groupmembers errno: <ics:getvar name='errno'/></b> <ics:listloop listname='mylist2'> <br> <ics:listget listname='mylist2' fieldname='NAME'/> </ics:listloop> <H2>Children of groupparent </H2> <ics:clearerrno/> <dir:children name='<%=sGroupParent%>' list='mylist'/> <br> <b>dir:children errno: <ics:getvar name='errno'/></b> <ics:listloop listname='mylist'> <br> <ics:listget listname='mylist' fieldname='NAME'/> </ics:listloop> </user:su>
どのディレクトリ・タグでも、設定時に様々なディレクトリ・エラーが発生する可能性があります。ディレクトリ・サービスのエラー・メッセージの包括的なリストは、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。
ディレクトリ・サービスのコードによって、指定されたタグ・コールでリストされたそれぞれのエラー・コードが処理される必要があります。これは、J2EE JNDIインタフェースをサポートするために必要です。
ディレクトリ・サービス・アプリケーションのトラブルシューティングの最初の手順は、エラー・ログ(WebCenter Sitesのログ・ファイル内の)のチェックです。
ディレクトリ・サービスのロギングを有効にするには、log.filterLevel
プロパティ(logging.ini
プロパティ・ファイル内にある)を設定します。次のように、7レベルのエラー・メッセージがあります。
fatal
: 致命的なレベルのメッセージのログ
severe
: 重度および致命的なレベルのメッセージのログ
error
: エラーおよび致命的なレベルのメッセージのログ
warning
: 警告および致命的なレベルのメッセージのログ
info
: 警告、エラー、重度および致命的なレベルのメッセージのログ
trace: トレース・メッセージのログ
詳細: すべてのタイプのメッセージのログ
トラブルシューティング時には、trace
が最も詳細な設定であり、そのためパフォーマンスへの影響は最も高くなります。
ディレクトリ・サービスは、エントリの使用を次の書式で記録します。
[<timestamp>][Directory-<severity>-<errno>] [<class>:<method>][<message>][<session id>]
例:
[Jan 17, 2002 1:49:44 PM][Directory-T] [BaseFactory:instantiateImplementation(ICS,String,Class[], Object[])][Instantiating:com.openmarket.directory.common.Factory] [PEccxyF1Ueh7zYvjNgg4D6bqZzf0llfWMaiBimIN9H1Z9KomDcPy]
前のメッセージはトレース(T)であるため、関連付けられたerrno
値はありません。
エラー・ロギングの詳細は、第10章「エラー・ロギングおよびデバッグ」を参照してください。
LDAP実装の共通の問題は、ディレクトリ・サーバーで誤って指定される権限です。エラー・ログが権限問題を示している場合には、ディレクトリ・サーバーの権限の設定をチェックして、認証されたユーザーがリクエストされた操作を実行する権限を持っていることを確認します。ディレクトリ・サーバーに直接ログインして(WebCenter Sites外)、権限が正しく設定されていることを確認するために同じアクションを実行します。ログと権限をチェックした後は、プロパティ・ファイルを調べることで、多くの場合構成エラーを解決できます。
プロパティの説明と値は、『Oracle Fusion Middleware WebCenter Sitesプロパティ・ファイル・リファレンス』を参照してください。
WebCenter Sitesは、アクセス制御リスト(ACL)でユーザーを管理します。ACLを使用すると、WebCenter Sitesデータベース内の表と、WebCenter Sitesによりサイトで処理したレンダリング済ページへのアクセスを制限できます。
訪問者がユーザー名とパスワードを使用してログインするオンライン・サイトを設計する場合、登録済訪問者を1つまたは複数のACLに関連付けることができます。
訪問者が最初にサイトを訪れると、WebCenter Sitesではセッションが作成され、その訪問者は標準デフォルト・ユーザーDefaultReaderとして暗黙的にログインされます。USER.LOGIN
コマンドが使用されて訪問者がパスワードで認証されると、訪問者のIDが更新されます(関連付けられたACLが有効になります)。
この項の内容は、次のとおりです。
WebCenter Sitesには、ACLの作成に使用できる一連のアクセス制御リストのタグ(XMLおよびJSPの両バージョン)が用意されています。配信システムのWebCenter SitesインタフェースかWebCenter Sites ACLタグのいずれかを使用して、配信システムの訪問者アカウントで必要なACLを作成できます。
次の表は、ACLタグのリストです。
タグ | 説明 |
---|---|
|
ACLを作成します |
|
ACLを削除します |
|
ACLにフィールドを収集します |
|
ACLからフィールドをコピーします |
|
ACLのリストを取得します |
|
ACLをロードします |
|
ACLを保存します |
|
ACLからフィールドを散布します |
|
ACL内のフィールドを設定します |
詳細の参照先:
ACLタグ: Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。
ACL全般: 『Oracle Fusion Middleware WebCenter Sites管理者ガイド』を参照してください。
WebCenter Sitesでは、ページでユーザーのログインおよびログアウトに使用する、次のUSER
タグ(XMLおよびJSPの両バージョン)タグも用意されています。
USER
タグは、次のとおりです。
タグ | 説明 |
---|---|
|
ユーザーをログインさせます。 |
|
ユーザーをログアウトさせます。 |
|
アカウント作成、ユーザー・プロファイルの編集などの操作を実行するために、特定のユーザーとしてユーザーをログインさせます。 |
これらのタグの詳細は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。
WebCenter Sitesには、パスワードやその他の機密関係の情報を暗号化するデフォルト・キーが用意されています。独自の暗号化キーを指定するには、Utilities
クラスのencryptString
メソッドを使用します。暗号化を処理するJavaメソッドの情報は、Oracle Fusion Middleware WebCenter Sites Java APIリファレンスを参照してください。
また、WebCenter SitesではSecure Sockets Layer (SSL)もサポートされており、これによってWebサーバーを出入りする情報の暗号化が許可されます。WebCenter SitesおよびSSLの詳細は、『Oracle Fusion Middleware WebCenter Sites管理者ガイド』を参照してください。
この項では、訪問者にログインをプロンプトしてユーザー名とパスワードを認証するログイン・フォームのコード化の方法を示す、簡単なコード・サンプルについて説明します。
この例は、次のエレメントのコードを示しています。
PromptForLogin
: ユーザー名とパスワードをリクエストするフォームを表示するXMLエレメントです。
Login
: PromptForLogin
エレメントから渡されるユーザー名とパスワードの組合せを認証するXMLエレメントです。
この項の内容は、次のとおりです。
PromptForLogin
エレメントは、訪問者にユーザー名とパスワードという2つの情報の入力を求めるフォームを表示します。
フォームを作成するコードは、次のとおりです。
<DIV ALIGN="center"> <FORM ACTION="ContentServer" METHOD="post"> <INPUT TYPE="hidden" NAME="pagename" VALUE="CSGuide/Security/Login"/> <TABLE CELLPADDING="5" CELLSPACING="5"> <TR> <TH ALIGN="right">Name</TH> <TD><INPUT TYPE="text" NAME="username" SIZE="16"/></TD> </TR> <TR> <TH ALIGN="right">Password</TH> <TD><INPUT TYPE="password" NAME="password" SIZE="16"/></TD> </TR> <TR> <TD> </TD> <TD ALIGN="center"><INPUT TYPE="submit" NAME="doit" VALUE="Login"/></TD> </TR> </TABLE> </FORM> </DIV>
訪問者はフォームに記入して、「送信」ボタンをクリックします。フォームとLogin
ページ(前述の最初のinput type
文を参照)のページ名で収集された情報がブラウザに送信されます。ブラウザからWebCenter Sitesにページ名が送信されると、WebCenter Sitesはその名前をSiteCatalog
表で検索し、そのページ・エントリのルート・エレメントを起動します。
WebCenter Sitesページのルート・エレメントは1つ(つまり、SiteCatalog
表内のエントリ)のみです。Login page
のルート・エレメントは、Login.xml
エレメントです。
Login
エレメントは訪問者のログインを試行し、次に訪問者がいずれかの必須ACLを持っているかどうかを確認するUSERISMEMBER
タグを使用して、訪問者を認証します。
このエレメントは、次の操作を実行します。
USER.LOGIN
タグで訪問者をログインさせ、エラーがなかったかチェックします。
ACLのリストを保持する変数リストを設定し、訪問者の資格証明を比較します。
リスト変数に対する訪問者のACL割当てを、USERISMEMBER
タグを使用してチェックします。
次のサンプル・コードは、訪問者を認証します。
<SETVAR NAME="errno" VALUE="0"/> <USER.LOGIN USERNAME="Variables.username" PASSWORD="Variables.password"/> <IF COND="Variables.errno=0"> <THEN> <H3>Welcome <CSVAR NAME="Variables.username"/></H3> <!-- Next, create a variable named aclToCheck and set it to hold the ACLs that the visitor needs to progress any further on the site. This variable can be set to one ACL or to a comma-separated list of ACLs, as in this example--> <SETVAR NAME="aclToCheck" VALUE="ContentCustomer,SiteGod"/> <SETVAR NAME="errno" VALUE="0"/> <USERISMEMBER GROUP="Variables.aclToCheck"/> <IF COND="Variables.errno=1"> <THEN> <P>You are a member of the at least one of the following acls: <CSVAR NAME="Variables.aclToCheck"/></P> </THEN> <ELSE> <P>Sorry, you are not a member of any of the following acls: <CSVAR NAME="Variables.aclToCheck"/></P> </ELSE> </IF> </THEN> <ELSE> <H3>Sorry, can't find your credentials.</H3> </ELSE> </IF>
この項では、訪問者に登録するようプロンプトするフォームのコード化の方法を示す簡単なコード・サンプルについて説明します。
この例は、次のエレメントのコードを示しています。
PromptForNew Account
: 使用するユーザー名とパスワードの入力を訪問者にリクエストするフォームを表示するXMLエレメント
CreateAccount
: 新規アカウントを作成するJSPエレメント
この項の内容は、次のとおりです。
PromptForNewAccount
エレメントは、ユーザー名とパスワードの入力と確認のためのパスワードの再入力を訪問者に求めるフォームを表示します。
フォームを作成するコードは、次のとおりです。
<div align="center"> <h3>Create a New Account</h3> <FORM ACTION="ContentServer" METHOD="post"> <input type="hidden" name="pagename" value="CSGuide/Security/CreateAccount"/> <table cellpadding="5" cellspacing="5"> <tr> <th align="right">Pick a username</th> <td><input type="text" name="username" size="16"/></td> </tr> <tr> <th align="right">Pick a password</th> <td><input type="password" name="password" size="16"/></td> </tr> <tr> <th align="right">Confirm your new password</th> <td><input type="password" name="confirm_password" size="16"/></td> </tr> <tr> <td> </td> <td><input type="submit" name="doit" value="Create Account"/></td> </tr> </table> </FORM> </div>
訪問者はフォームに記入して、「送信」ボタンをクリックします。フォームとCreateAccount
ページ(前述の最初のinput type
文を参照)のページ名で収集された情報がブラウザに送信されます。
ブラウザからWebCenter Sitesにページ名が送信されると、WebCenter Sitesはその名前をSiteCatalog
表で検索し、そのページ・エントリのルート・エレメントを起動します。
WebCenter Sitesページのルート・エレメントは1つ(つまり、SiteCatalog
表内のエントリ)のみです。CreateAccount page
のルート・エレメントは、CreateAccount.jsp
エレメントです。
SiteGod
またはContentEditor
ACLを持つユーザーのみが、新規ユーザー・アカウントを作成できます。この制限があるため、CreateAccount
エレメントは次の操作を実行します。
訪問者に気付かれずに、権限を持つユーザーとして訪問者をログインさせます。
アカウントを作成します。
新規ユーザーに適切なACLを割り当てます(どのユーザーも最低1つのACLに属す必要があります)
新規ユーザー・アカウントを作成するコードは、次のとおりです。
<SETVAR NAME="errno" VALUE="0"/> <!-- switch temporarily to a privileged user --> <!-- The username and password for the privileged user should be encrypted in a property file. You should obtain them from the property file, decrypt them, then pass them it. For this example, they are hard-coded. --> <USER.SU USERNAME="jumpstart" PASSWORD="jumpstart"> <USERISMEMBER GROUP="UserEditor"/> <IF COND="Variables.errno!=1"> <THEN> <h3>An error has occurred creating the account (no UserEditor privs). Contact the webmaster</h3> </THEN> <ELSE> <IF COND="Variables.password!=Variables.confirm_password"> <THEN> <h3>Your passwords do not match. Click the Back button and try again.</h3> </THEN> <ELSE> <!-- Get the parameters from the property file --> <ics.getproperty name="username" file="dir.ini" output="unameattr"/> <ics.getproperty name="password" file="dir.ini" output="passattr"/> <!-- create the user's name in the right format for the dir tags --> <ics.getproperty name="peopleparent" file="dir.ini" output="namebase"/> <name.makechild context="Variables.namebase" output="iname"> <name.argument name="Variables.unameattr" value="Variables.username"/> </name.makechild> <!-- create the user --> <dir.create name="Variables.iname"> <dir.argument name="Variables.unameattr" value="Variables.username"/> <dir.argument name="Variables.passattr" value="Variables.password"/> <!-- additional parameters can be added here but for the example we won't --> <!-- In particular, if you are using LDAP, you will have to spin through and set the values of the properties in the property requiredPeopleAttrs in dir.ini. --> </dir.create> <IF COND="Variables.errno=0"> <THEN> <!-- give the new user an acl and format it correctly for dir.addgroupmember --> <ics.getproperty name="groupparent" file="dir.ini" output="groupparent"/> <ics.getproperty name="cn" file="dir.ini" output="cn"/> <name.makechild context="Variables.groupparent" output="groupid"> <name.argument name="Variables.cn" value="Browser"/> </name.makechild> <!-- add the acl --> <dir.addgroupmember name="Variables.groupid" member="Variables.iname"/> <IF COND="Variables.errno=0"> <THEN> <h3>Success!</h3> </THEN> <ELSE> <h3>User created but error adding user to group. Contact the webmaster</h3> </ELSE> </IF> </THEN> <ELSE> <h3>Error creating user! Contact the webmaster.</h3> </ELSE> </IF> <!-- create success check --> </ELSE> </IF> <!-- passwords match --> </ELSE> </IF> </USER.SU>
Burlington Financialサンプル・サイトには、新規メンバーのサインアップおよび既存メンバーのログインを実行するエレメントを使用するメンバーシップ・コンポーネントが用意されています。
これらの訪問者登録エレメントは、実際のWebサイトで使用できるほど強力ではありませんが、独自のデザインの開始ポイントとして使用できます。たとえば、Burlington Financialには訪問者アカウントのサンプル画面があり、これを使用すると、訪問者はそれぞれのプリファレンスを登録して設定できます。ただし、この情報を使用して、特定のWebページに対する訪問者のアクセスを制限したり、メンバーのプロファイルに基づいて推奨したりすることはありません。
この項の内容は、次のとおりです。
Burlington Financialでは、bfmembers
という名前の表を使用して、メンバーシップ・コンポーネントを実装します。(この表は、インストール時にサンプル・サイトに対して作成されたものです。WebCenter Sitesモジュールや製品によってこの表が使用されることはありません。)メンバーシップ・エレメントによって、新規登録のメンバーのプロファイル情報ごとに行がbfmembers
データベース表に追加されますが、SystemUsers
表には行が追加されません。
すべてのBurlington Financialメンバーに対して1人の一般ユーザー(BFUser)がいます。名前とパスワードは同じもの(BFUser/BFUser
)であり、変更できません。Burlington Financialのメンバー・ログイン・コードは訪問者のセッション変数を設定し、その訪問者の識別に使用されます。
Burlington Financialはサンプル・サイトのため、メンバーのパスワードはbfmembers
表にプレーン・テキストとして保存されます。実際のWebサイトでは、パスワードは暗号化された形式で保存されます。Burlingtonでは、訪問者、BFメンバーおよびブラウザACLの権限がbfmembers
表に追加されたエントリに付与されます。
現在は、Burlington Financialアカウントを管理するエレメントは存在しません。メンバーのアカウントの編集や削除を試行する場合には、Oracle WebCenter Sites Explorerを使用してbfmembers
表を変更します。
Burlington Financialメンバーへの処理リクエストに対応するエレメントが複数あります。Burlington Financialサンプル・サイトをインストールしてあれば、Oracle WebCenter Sites Explorerを使用して開き、調べることができます。1つを除いて、すべてが次の場所にあります。
ElementCatalog/BurlingtonFinancial/Util/Account
AccountAccessScript
エレメントは、次の場所にあります。
ElementCatalog/BurlingtonFinancial/Util
AccountAccess.xml
これは、ヘッダー、フッター、ナビゲーション・メニューおよびアカウント・コンテンツのページレット・エレメントをコールするページ・テンプレートです。
AccountAccessScript.xml
このファイルには3つのJavaScriptルーチン(checkSignupForm
、checkProfileForm
およびcheckLoginForm
)が含まれており、HTMLアカウント・フォームで基本エラー・チェックを実行します。これは、Login.xml
エレメント、Profile.xml
エレメントおよびSignUp.xml
エレメントからコールされます。
Benefits.xml
このページは、Block.xml
記事テンプレートをコールし、Burlington Financialサイトに関するテキストの記事をレンダリングします。実際のWebサイトでは、記事には役立つ情報が掲載されます。
Login.xml
このページでは、登録されたメンバーのログイン画面が表示され、ログイン・フォーム入力を処理するLoginPost.xml
がコールされます。また、Benefits.xml
をコールし、メンバー以外にはSignUp.xml
をコールします。
LoginPost.xml
このページレット・エレメントはProcessLogin.xml
をコールして、ログイン・メッセージを表示します。
Profile.xml
訪問者が登録されていれば、このページに編集可能なプロファイル・フォームが表示され、訪問者が未登録の場合はSignUp.xml
がコールされます。
ProcessLogin.xml
このページレット・エレメントは、フォームを送信した訪問者が登録済メンバーかどうかに応じて、適切なログイン・メッセージを表示します。
SignUp.xml
このページでは、未登録訪問者向けサインアップ画面が表示され、the catalogmanager
がコールされ、新規ユーザーに対してはbfmembers
表に行が追加され、既存ユーザーに対してはbfmembers
表が更新されます。