Monday, August 31, 2015

LiferayのLDAP連携

最近は涼しくなってきましたね。残暑はあるのでしょうか。暑さに弱いので、できればこのままいってもらいたいナクラです。
今日はLiferayのLDAP連携について書きたいと思います。
わたしも社内のご多分に漏れずMacを利用しているので
LDAPとしてはOpenLDAPを利用します。
OpenLDAPのインストールについては、こちらの記事を参考にしてください。

さて、Liferayではユーザ情報としてはメールアドレスが必須になります。
従ってLDAP側では メールアドレス付きのユーザを作成しておく必要があります。
上記のリンクの記事を参考にOpenLDAPを入れていただいた場合、
メールアドレス情報付きのユーザを作成するには、
slapd.confファイルに
include         /private/etc/openldap/schema/cosine.schema
include         /private/etc/openldap/schema/inetorgperson.schema
のような形で、cosine.schemaとinetorgpersion.schemaをインクルードする
設定を追記してください。

LDAP:ユーザの作成

次には、LDAP上にユーザを作成していきましょう。
今回はApache Directory Studioを使って作っていきます。
まず、Apache Directory Studioを起動します。
右下のConnectionビューの「New Connection」をクリックします。
新しいコネクションを設定するウィンドウが開くので、コネクション名とホスト名、ポート名などを設定します。
今回はコネクション名はsample_liferay、ホスト名はlocalhost、ポート番号は389とします。(ホスト名やポート番号は、実際にLDAPをインストール環境にあわせてください。)
Nextをクリックすると、認証の設定画面に変わるので、
Bind DN or user:の部分にはslap.confのrootdnの値を設定します。
Bind passwordにはrootpwで設定した値(slappasswdコマンドで生成した値を入れている場合は、生成時に設定したパスワード文字列)を入力します。

Finishをクリックします。
右側のLDAP Browserビューに新しくコネクションが追加されます。
まず、slap.confのsuffixに該当する組織を作成します。
右クリックしてNew > New Context Entryと選択します。
エントリ作成の画面が表示されます。
Create entry from scratchにチェックが入っている状態で、Nextをクリックします。
エントリのオブジェクトクラスを設定する画面が表示されるので、dcObjectを選択して、Addボタンを押します。
同じようにしてorganizationUnitを選択してAddボタンを押して、項目に追加します。
追加が終わったらNextボタンをクリックします。

Distinguished Nameを設定する画面が表示されるので、slap.confのsuffixの設定と同じものを入力します。 (例 dc=aegif,dc=jp)

Nextをクリックすると、次のような画面が表示されるので、ouに値を設定してFinishをクリックします。ouは組織名です。設定する値はなんでも構いません。

 次にユーザを作成します。先ほど作ったコンテクストエントリを右クリックして、New > New Entryと選択します。先ほどと同じようなエントリ作成の画面が表示されます。Create entry from scratchにチェックが入っている状態で、Nextをクリックします。
エントリのオブジェクトクラスを設定する画面が表示されるので、inetOrgPersonを選択して、Addボタンを押します。
NextをクリックするとRDNを設定する画面が表示されます。
ここではLiferayに必要な情報を追加していきます。スクリーン名、メールアドレス、姓、名などを入れていきます。項目名は事前に利用するクラスによって使えるものが決まって来ます。
Nextをクリックして、Finishをクリックします。

これで、LDAP側にユーザが作成できました。
次はLiferay側の設定をしましょう。

LiferayのLDAP設定

Liferayサーバを起動して、管理者でログインします。
コントロールパネルに移動し、ConfigurationのPortal Settingsをクリックします。
右側のメニューでAuthenticationをクリックします。
LDAPタブを選択します。次の画面が表示されます。

 EnabledのチェックボックスとImport Enabledのチェックボックスにチェックを入れて、保存をクリックします。
次にLDAP ServerのAddボタンをクリックします。
サーバの追加画面が表示されます。
Server Nameを入力し、
Default ValuesにOpenLDAPにチェックを入れてReset Valuesをクリックします。
 これでOpenLDAPに則した項目マッピングがされるようになります。ただし、Connectionの部分は、自分の環境に合わせて設定が必要です。
 Base Provider URLはホストサーバのURLとポート番号、Base DNにはslap.confのsuffixの値、Principalにはrootdnの値、Credentialsにはrootpwに該当するパスワード文字列を設定します。
これで設定はできました。一応、画面を下にスクロールして、User Mappingの項目を確認してください。LDAPサーバで登録したユーザ情報と項目がマッチするように設定されています。基本的にはデフォルトのままでOKですので、このままSaveボタンをクリックします。

以上、で設定が完了しました。
しばらくすると同期処理が走って、LDAPで作成したユーザがLiferay側にも作成されます。(デフォルトでは同期のタイミングは10分おきになっています。設定を変更したい場合はportal-ext.propertiesファイルに ldap.import.interval = XX と設定してください XXは任意の数字で分単位です)

まとめ

LiferayのLDAPサーバとの連携は非常に簡単です。
既存のLDAPサーバを連携する場合は、LiferayのLDAP設定から始めてもらえれば大丈夫です。ユーザと同じようにして、グループの設定も可能です。
Liferayの運用の場面で良くある話ですが、大量のユーザの追加をUIから行うのは大変なので、LDAP連携の機能を利用してユーザの管理を行うと作業が楽になるでしょう!



Tuesday, August 11, 2015

Liferayのパーソナライゼーションについて

ナクラです。
ひさびさにブログを書く事になりました。
いつまで続けられるか分かりませんが
今後は力の限り、Liferayの機能を紹介していきたいと思います。

さて、今回のトピックは「パーソナライゼーション」です。
Wikipediaなどを参考にすると、「パーソナライゼーション」とは、個人向けにカスタマイズを行うことを指すようです。
ポータルの概念で捉えると、「ポータルにアクセスしたユーザ毎に、表示する内容をそのユーザ向けに変更すること」になります。
Liferayでもいろいろな形でパーソナライズを行うための機能が用意されています。


能動的パーソナライズと受動的パーソナライズ

Liferayのパーソナライゼーション機能について見ていく前に、2つのパーソナライズ方針について整理しておきましょう。
これを仮に「能動的パーソナライズ」と「受動的パーソナライズ」と呼ぶ事にします。
「能動的パーソナライズ」の定義は「ユーザ自身が自分で、表示する内容を変更すること」です。例としては、個人のブログサイトが分かりやすいでしょう。ユーザがブログサイト上で自分でブログを書いたり、ページのレイアウトを変更したり、バナーを貼ったりといったことを行います。
 「受動的カスタマイズ」の定義は「ユーザの属性情報を元に自動で表示する内容を変更すること」です。
この例としては、会員制キャンペーンサイトなどがあります。
サイトにログインした会員に対して、会員の持っているポイント情報や、最近購入した商品、おすすめの商品など個別のユーザごとに表示するコンテンツが変わってくるものになります。

それでは、Liferay上でこれらのパーソナライズの機能をどのように実現しているのか見ていきましょう。

Liferayの能動的パーソナライズ

Liferayでは能動的パーソナライズとして2つの機能が用意されています。
1つ目は、個人用サイトの機能です。
ユーザを作成した際に、ユーザ自身が管理者となった「プロフィール」という名前の公開サイトと「ダッシュボード」という名前の非公開サイトが自動的に作成されます。
この個人用サイトではユーザがページやページの要素を設定できるため、非常に高い自由度があります。
Liferayにログインすると、自分の名前が表示されています。
その部分をクリックすると「プロフィール」と「ダッシュボード」が表示されます。
クリックすると、それぞれ個人用のサイトが表示されます。

個人用のサイトが表示されたら、その上で自由にポートレットを配置したり、コンテンツを表示したりできるようになります。

2つ目は、ページのカスタマイズ機能です。Liferayではページを作成する際に、ポートレットをページの上に配置していくのですが、それはページのレイアウトに従って配置されます。
以下の図は2列のレイアウトを表しています。

Liferayではデフォルトで様々なレイアウトが用意されていて、3列のレイアウトや1段目を1列、2段目を2列にするといったレイアウトなども用意されています。
ページのカスタマイズ機能はこのレイアウトの一部だけを、ユーザに解放し、そこだけは、ユーザが自由にポートレットを配置できるようにします。
カスタマイズの設定はまず サイトの管理権限のあるユーザでカスタマイズ設定したいサイトのページにアクセスして、画面上部のドックバーから「システム管理」➡「ページの編集」をクリックします。


ページの管理画面が表示されるので、カスタマイズ設定をするページをクリックします。
ここではHomeのページを選択します。右側のメニューでページ毎に設定できる項目が表示されるので、その中にある「カスタマイズの設定」メニューをクリックします。そうすると以下のようなカスタマイズ設定の画面が表示されます。
 ユーザにカスタマイズを解放したいレイアウトのエリアのチェックボックスにチェックを入れて保存します。


これで、Homeページを表示すると、カスタマイズを解放したレイアウトはユーザが自由にポートレットの追加や削除が可能になりますが、レイアウトを解放していない部分は固定になります。




Liferayの受動的パーソナライズ

Liferayでは受動的パーソナライズとして、アクセス権限管理機能が使えます。
ポータルの一般的な機能として、ユーザの持つ権限によって、ポートレットやコンテンツに対してのアクセス権の設定が行えるので、これを利用してページに配置したポートレットを見せたり、見せなくしたりできます。この機能はユーザ毎に設定するわけではないので厳密に言うとパーソナライゼーションとは外れるのですが、サイトコンテンツの表示を見せたり、見せなくする方法としてはよく使われる方法です。
本格的に受動的パーソナライズを行うにはルールエンジンと連携します。LiferayはDroolsといったルールエンジンと連携するプラグインが提供されています。(このプラグインはエンタープライズエディション専用のプラグインとなっています。)
ルールエンジンを活用すれば、アクセス管理で行うよりも柔軟な形のパーソナライゼーションが可能となります。
例えば、ユーザの住所の情報から、近くの地域で行われているイベントを抽出して表示するようなことが可能になります。
ルールエンジンとの連携については、また将来のブログで紹介させていただければと思います。

以上で、簡単ではありますが、Liferay で実現されているパーソナライゼーションについて見てきました。
ポータル製品の性格上、一般的なCMSに比べてパーソナライゼーションについての機能は充実しているのがお分かりいただけたかと存じます。
これらの機能を活用して、ダイナミックで魅力のあるサイトを構築してください。

それでは、また次回のLiferay紹介でお会いしましょう!