Sitesでは、USERタグによる認証機能、DIRタグによるユーザー・プロファイル管理が用意されており、アクセス制御リスト(ACL)によりデータベース表およびレンダリングされたページのセキュリティが強化されています。Sitesの開発システムと管理システムに対する訪問者のアクセスを制御します。この章には次の項が含まれます。Sitesシステムで認証情報、ユーザー情報などが格納されているディレクトリ・サーバーへの接続を有効化します。Sitesシステムがインストールされたときにインストールされています。Sitesユーザー管理表(SystemUsers表およびSystemUserAttrs表)を使用します。任意のJNDIサーバーをサポートします。ユーザー資格証明とログイン名はNTディレクトリから取得しますが、その他のすべてのユーザー情報はSystemUserAttrs表から取得します。Sitesシステムのインストール時にインストールされ、構成するにはdir.iniファイルでプロパティを設定します。Sites管理者ガイド』を参照してください。この項の内容は、次のとおりです。エントリディレクトリのエントリは、割り当てられた属性(特にユーザーおよびグループ・タイプのエントリ)を備えた名前付きオブジェクトです。ユーザー・タイプ・オブジェクトには、識別名および一連の属性として一般名、ユーザー名、パスワード、電子メールなどが備わっています。ACLと同様、グループ・タイプ・オブジェクトにも識別名と一連の属性があります。名前は関連付けられている階層を反映しています。ディレクトリ実装での移植性を確保するために、名前は不透明な文字列として処理する必要があります。一部のディレクトリ・データベースは、階層構造を使用してエントリを編成します。Sitesのディレクトリ・サービスAPIでは、エントリの属性と階層内でのその場所は個別になっています。その結果、エントリの属性の取得によってその子の情報は発生しません。階層に対するサポートは、基礎となるディレクトリの実装に応じて異なります。Sitesのネイティブ・ディレクトリ・データベースは階層構造をサポートしません。ディレクトリ実装での移植性を確保するために、コードは階層データのサポートを想定していません。Sitesの権限に影響を及ぼしません。Sitesのディレクトリ・サービスAPIは、参照整合性を実行しません。ディレクトリ・タグを持つユーザーを削除する場合、アプリケーションでは、関連付けられたグループからの最初のユーザー削除によってグループ・メンバーシップも確実に削除される必要があります。メンバーがグループに追加されるたびに、JNDI実装では、addmemberタグに渡される名前とは関係なく、uniquemember属性の値に対して完全に識別される名前が作成されます。Sitesでは、XMLおよびJSPの両バージョンで、ディレクトリ・サービスAPIの起動に使用できるDIRタグ・ファミリが配信されます。DIRタグは、次のとおりです。タグ説明DIR.ADDATTRSdir:addattrs属性を既存のエントリ(ユーザーまたはグループのいずれか)に追加します。DIR.ADDGROUPMEMBERdir:addgroupmemberメンバーをグループ(通常はユーザー)に追加します。DIR.CHILDRENdir:childrenリスト変数の特定の親に対する子エントリを取得します。DIR.CREATEdir:createディレクトリ・エントリを作成します。DIR.DELETEdir:deleteディレクトリ・エントリを削除します。DIR.GETATTRSdir:getattrsリスト変数の特定のエントリに対する属性値を取得します。DIR.GROUPMEMBERSdir:groupmembers指定されたグループのメンバーのリストを作成します。DIR.GROUPMEMBERSHIPSdir:groupmembershipsエントリ(グループまたはユーザーのいずれか)が属するすべてのグループのリストを作成します。DIR.LISTUSERSdir:listusersディレクトリ内のすべてのユーザーのリストを返します。DIR.REMOVEATTRSdir:removeattrsエントリの属性値を削除します。DIR.REMOVEGROUPMEMBERdir:removegroupmemberグループのエントリを削除します。DIR.REPLACEATTRSdir.replaceattrsエントリ(ユーザーまたはグループのいずれか)の属性値を置換します。DIR.SEARCHdir:search指定された検索基準と一致するエントリのディレクトリを検索します。Sitesのみ、またはその他のディレクトリ・サーバーのいずれを実装しているかに関係なく、DIRタグで記述するコードは酷似しています。Sitesタグ・リファレンスを参照してください。コード・サンプルは、第31.1.5.4項「ディレクトリ・サービスのコード・サンプル」を参照してください。Sitesディレクトリ・サービスのタグは、データベースに情報を書き込みます。データベース管理者が、データベースへのユーザー情報の追加など、Webサイトへの書込み操作をすべて処理している場合、ディレクトリ・タグの使用を読取り専用の操作に制限します。このポリシーによって、サードバーティのディレクトリ管理ツールとの同期化に関する問題が回避されます。読取り専用操作については、この項で説明します。資格証明と現在の認証済ユーザーの読取り権限を使用して、操作を実行します。一部のディレクトリ・サーバーの制限のため、組織の最上位レベルからの検索は許可されていません。移植性の問題を回避するために、DIR.SEARCHタグのコンテキスト属性を必ず指定してください。ルックアップユーザーのルックアップには、通常、次の2つの手順を実行します。エントリ名を取得するには、useridのDIR.SEARCHをコールします。問題のユーザーの属性を取得するには、DIR.GETATTRSをコールします。ユーザーのリスト作成ユーザーのリストを作成するには、次の3つの方法のいずれかを使用することをお薦めします。小規模のユーザー・データベースの場合、DIR.LISTUSERSタグを使用します。これは、peopleParentプロパティに従ってすべてのユーザーのリストを再帰的に作成します。このタグの使用は、より大規模なユーザー・データベースでは非効率的です。大規模なユーザー・データベースの場合、階層の移動にはDIR.CHILDRENタグを使用します。DIR.CHILDRENタグはグループ・タイプには最適ですが、ユーザー・タイプには適していません。フラットな階層を持つユーザー・データベースの場合、検索結果を絞り込みます。ディレクトリ・サービスのコード・サンプル次のJSPコード・サンプルは、可能なディレクトリ操作を示しています。エラーの処理どのディレクトリ・タグでも、設定時に様々なディレクトリ・エラーが発生する可能性があります。Sitesタグ・リファレンスを参照してください。ディレクトリ・サービスのコードによって、指定されたタグ・コールでリストされたそれぞれのエラー・コードが処理される必要があります。JNDIインタフェースをサポートするために必要です。Sitesのログ・ファイル内の)のチェックです。ディレクトリ・サービスのロギングを有効にするには、log.filterLevelプロパティ(logging.iniプロパティ・ファイル内にある)を設定します。次のように、7レベルのエラー・メッセージがあります。すべてのタイプのメッセージのログトラブルシューティング時には、traceが最も詳細な設定であり、そのためパフォーマンスへの影響は最も高くなります。ディレクトリ・サービスは、エントリの使用を次の書式で記録します。PM][Directory-T][BaseFactory:instantiateImplementation(ICS,String,Class[],Object[])][Instantiating:com.openmarket.directory.common.Factory][PEccxyF1Ueh7zYvjNgg4D6bqZzf0llfWMaiBimIN9H1Z9KomDcPy]前のメッセージはトレース(T)であるため、関連付けられたerrno値はありません。エラー・ロギングの詳細は、第10章「エラー・ロギングおよびデバッグ」を参照してください。LDAP実装の共通の問題は、ディレクトリ・サーバーで誤って指定される権限です。エラー・ログが権限問題を示している場合には、ディレクトリ・サーバーの権限の設定をチェックして、認証されたユーザーがリクエストされた操作を実行する権限を持っていることを確認します。Sites外)、権限が正しく設定されていることを確認するために同じアクションを実行します。ログと権限をチェックした後は、プロパティ・ファイルを調べることで、多くの場合構成エラーを解決できます。Sitesプロパティ・ファイル・リファレンス』を参照してください。Sitesは、アクセス制御リスト(ACL)でユーザーを管理します。Sitesによりサイトで処理したレンダリング済ページへのアクセスを制限できます。1つまたは複数のACLに関連付けることができます。Sitesではセッションが作成され、その訪問者は標準デフォルト・ユーザーDefaultReaderとして暗黙的にログインされます。USER.LOGINコマンドが使用されて訪問者がパスワードで認証されると、訪問者のIDが更新されます(関連付けられたACLが有効になります)。この項の内容は、次のとおりです。Sitesには、ACLの作成に使用できる一連のアクセス制御リストのタグ(XMLおよびJSPの両バージョン)が用意されています。ACLタグのいずれかを使用して、配信システムの訪問者アカウントで必要なACLを作成できます。次の表は、ACLタグのリストです。Sitesタグ・リファレンスを参照してください。Sites管理者ガイド』を参照してください。Sitesでは、ページでユーザーのログインおよびログアウトに使用する、次のUSERタグ(XMLおよびJSPの両バージョン)タグも用意されています。USERタグは、次のとおりです。タグ説明USER.LOGINuser:loginユーザーをログインさせます。USER.LOGOUTuser:logoutユーザーをログアウトさせます。USER.SUuser:suアカウント作成、ユーザー・プロファイルの編集などの操作を実行するために、特定のユーザーとしてユーザーをログインさせます。Sitesタグ・リファレンスを参照してください。Sitesには、パスワードやその他の機密関係の情報を暗号化するデフォルト・キーが用意されています。独自の暗号化キーを指定するには、UtilitiesクラスのencryptStringメソッドを使用します。APIリファレンスを参照してください。(SSL)もサポートされており、これによってWebサーバーを出入りする情報の暗号化が許可されます。Sites管理者ガイド』を参照してください。ログイン・フォームの作成この項では、訪問者にログインをプロンプトしてユーザー名とパスワードを認証するログイン・フォームのコード化の方法を示す、簡単なコード・サンプルについて説明します。この例は、次のエレメントのコードを示しています。ユーザー名とパスワードをリクエストするフォームを表示するXMLエレメントです。PromptForLoginエレメントから渡されるユーザー名とパスワードの組合せを認証するXMLエレメントです。この項の内容は、次のとおりです。ログインのプロンプト(PromptForLogin.xml)PromptForLoginエレメントは、訪問者にユーザー名とパスワードという2つの情報の入力を求めるフォームを表示します。フォームを作成するコードは、次のとおりです。VALUE="Login"/></TD></TR></TABLE></FORM></DIV>訪問者はフォームに記入して、「送信」ボタンをクリックします。type文を参照)のページ名で収集された情報がブラウザに送信されます。Sitesはその名前をSiteCatalog表で検索し、そのページ・エントリのルート・エレメントを起動します。Sitesページのルート・エレメントは1つ(つまり、SiteCatalog表内のエントリ)のみです。pageのルート・エレメントは、Login.xmlエレメントです。Loginエレメントは訪問者のログインを試行し、次に訪問者がいずれかの必須ACLを持っているかどうかを確認するUSERISMEMBERタグを使用して、訪問者を認証します。このエレメントは、次の操作を実行します。USER.LOGINタグで訪問者をログインさせ、エラーがなかったかチェックします。ACLのリストを保持する変数リストを設定し、訪問者の資格証明を比較します。リスト変数に対する訪問者のACL割当てを、USERISMEMBERタグを使用してチェックします。次のサンプル・コードは、訪問者を認証します。ユーザー・アカウント作成フォームの作成この項では、訪問者に登録するようプロンプトするフォームのコード化の方法を示す簡単なコード・サンプルについて説明します。この例は、次のエレメントのコードを示しています。新規アカウントを作成するJSPエレメントこの項の内容は、次のとおりです。PromptForNewAccountPromptForNewAccountエレメントは、ユーザー名とパスワードの入力と確認のためのパスワードの再入力を訪問者に求めるフォームを表示します。フォームを作成するコードは、次のとおりです。Account"/></td></tr></table></FORM></div>訪問者はフォームに記入して、「送信」ボタンをクリックします。type文を参照)のページ名で収集された情報がブラウザに送信されます。Sitesはその名前をSiteCatalog表で検索し、そのページ・エントリのルート・エレメントを起動します。Sitesページのルート・エレメントは1つ(つまり、SiteCatalog表内のエントリ)のみです。pageのルート・エレメントは、CreateAccount.jspエレメントです。ACLを持つユーザーのみが、新規ユーザー・アカウントを作成できます。この制限があるため、CreateAccountエレメントは次の操作を実行します。訪問者に気付かれずに、権限を持つユーザーとして訪問者をログインさせます。アカウントを作成します。新規ユーザーに適切なACLを割り当てます(どのユーザーも最低1つのACLに属す必要があります)新規ユーザー・アカウントを作成するコードは、次のとおりです。Financialサンプル・サイトには、新規メンバーのサインアップおよび既存メンバーのログインを実行するエレメントを使用するメンバーシップ・コンポーネントが用意されています。これらの訪問者登録エレメントは、実際のWebサイトで使用できるほど強力ではありませんが、独自のデザインの開始ポイントとして使用できます。Financialには訪問者アカウントのサンプル画面があり、これを使用すると、訪問者はそれぞれのプリファレンスを登録して設定できます。この情報を使用して、特定のWebページに対する訪問者のアクセスを制限したり、メンバーのプロファイルに基づいて推奨したりすることはありません。この項の内容は、次のとおりです。Financialでは、bfmembersという名前の表を使用して、メンバーシップ・コンポーネントを実装します。(この表は、インストール時にサンプル・サイトに対して作成されたものです。Sitesモジュールや製品によってこの表が使用されることはありません。)メンバーシップ・エレメントによって、新規登録のメンバーのプロファイル情報ごとに行がbfmembersデータベース表に追加されますが、SystemUsers表には行が追加されません。Financialメンバーに対して1人の一般ユーザー(BFUser)がいます。名前とパスワードは同じもの(BFUser/BFUser)であり、変更できません。Financialのメンバー・ログイン・コードは訪問者のセッション変数を設定し、その訪問者の識別に使用されます。Financialはサンプル・サイトのため、メンバーのパスワードはbfmembers表にプレーン・テキストとして保存されます。実際のWebサイトでは、パスワードは暗号化された形式で保存されます。Burlingtonでは、訪問者、BFメンバーおよびブラウザACLの権限がbfmembers表に追加されたエントリに付与されます。Financialアカウントを管理するエレメントは存在しません。Explorerを使用してbfmembers表を変更します。Financialメンバーへの処理リクエストに対応するエレメントが複数あります。Explorerを使用して開き、調べることができます。1つを除いて、すべてが次の場所にあります。ElementCatalog/BurlingtonFinancial/Util/AccountAccountAccessScriptエレメントは、次の場所にあります。ElementCatalog/BurlingtonFinancial/UtilAccountAccess.xmlこれは、ヘッダー、フッター、ナビゲーション・メニューおよびアカウント・コンテンツのページレット・エレメントをコールするページ・テンプレートです。AccountAccessScript.xmlこのファイルには3つのJavaScriptルーチン(checkSignupForm、checkProfileFormおよびcheckLoginForm)が含まれており、HTMLアカウント・フォームで基本エラー・チェックを実行します。これは、Login.xmlエレメント、Profile.xmlエレメントおよびSignUp.xmlエレメントからコールされます。Financialサイトに関するテキストの記事をレンダリングします。実際のWebサイトでは、記事には役立つ情報が掲載されます。Login.xmlこのページでは、登録されたメンバーのログイン画面が表示され、ログイン・フォーム入力を処理するLoginPost.xmlがコールされます。Benefits.xmlをコールし、メンバー以外にはSignUp.xmlをコールします。LoginPost.xmlこのページレット・エレメントはProcessLogin.xmlをコールして、ログイン・メッセージを表示します。Profile.xml訪問者が登録されていれば、このページに編集可能なプロファイル・フォームが表示され、訪問者が未登録の場合はSignUp.xmlがコールされます。ProcessLogin.xmlこのページレット・エレメントは、フォームを送信した訪問者が登録済メンバーかどうかに応じて、適切なログイン・メッセージを表示します。catalogmanagerがコールされ、新規ユーザーに対してはbfmembers表に行が追加され、既存ユーザーに対してはbfmembers表が更新されます。reserved.法律上の注意点ライブラリ。