Thursday, January 28, 2016

Alfresco勉強会#31でAlfrescoにウイルススキャンを実装する話をしました

こんにちは。おおたにです。

先日、第31回Alfresco勉強会が開催されました。今回はいつもより参加者が少なかったこともあり、具体的なAlfrescoの利用方法や便利機能、設定項目など、様々な内容についてディスカッションが行われました。

さて、今回の発表ですが、私が、「Alfresco 5.0にウイルススキャン機能を実装してみる」というタイトルでAlfrescoにアップロードされたコンテンツをウイルススキャンするようなカスタマイズについて発表しました。



Alfresco自体はウイルススキャンのエンジンを持っていないため、ファイルアップロードのタイミングで外部のウイルススキャンを利用する必要があるのですが、 それらを実現するために必要な仕組みの説明と実際のデモをご覧いただきました。当日のスライドを見ると分かるのですが、ウイルススキャンを実装するために以下の仕組みを利用しました。
  • Policy(とBehaviour)
  • Transaction Listener
  • Action
  • RuntimeExec

サンプルコードはBitbucketで公開しておりますので、是非お試しください。



Monday, November 30, 2015

LiferayのAudience Targetingで動的にユーザーセグメントを割り当ててみよう

こんにちは、かわべです。かなり日が空いてしまいましたが、LiferayのAudience Targeting(ユーザー解析)に関する記事の続きです。前編ではインストール方法とユーザーセグメントについて説明しました。今回は後編として、タグとスコアを利用した動的なユーザーセグメントの割り当て方法と、キャンペーンという機能について紹介していきたいと思います。

ユーザーセグメントのタグとスコアとは

前回の記事からの繰り返しとなりますが、ユーザーセグメントとはユーザーを特定の条件に従ってセグメント化したものです。その特定の条件に、対象となるコンテンツを何度閲覧したかという「スコア」という仕組みを使うことができ、ユーザーセグメントのタグを使用して対象となるコンテンツを設定します。

具体的な使い方を見ていきましょう。引き続き、保険会社の会員向けポータルサイトにAudience Targetingを導入していくという設定です。ポータルにはすでに以下3名のユーザーがいるとします。

1. Boy Twenty-Five
2. Boy Forty
3. Girl Twenty-Five

今回はプロフィールに登録された性別や年齢によってユーザーセグメントを定義するのではなく、ユーザーが「海外旅行保険興味あり」というタグが設定されたコンテンツやページに3回以上アクセスすると、そのユーザーを「海外旅行保険興味あり」というユーザーセグメントに動的に割り当てることにします。結果を検証するため、「海外旅行保険興味あり」のユーザーには、ログイン後のトップページに海外旅行保険に関連するコンテンツを表示する設定を追加します。

まずは「海外旅行保険興味あり」というユーザーセグメントを作成します。対象サイトのシステム管理→編集→ユーザー解析へアクセスし、「ユーザーセグメントの追加」をクリックします。名前は「海外旅行保険興味あり」、ルール「振る舞い」から「スコア」を追加し、スコアの値は「3」にして保存します。この数字が何度のコンテンツ閲覧でこのユーザーセグメントに割当てるかという値になります(1アクセス1ポイントです)。



次は、閲覧すると「海外旅行保険興味あり」に1ポイント加算されるページを作成します。

トップページにバナーをいくつか並べておき、



真ん中の海外旅行保険のものをクリックすると、以下の海外旅行保険説明ページに遷移するようにします。


このページには、「海外旅行保険興味あり」のタグを設定しておきます。ユーザーセグメントを作成するだけで同じ名前のユーザーセグメントタグが自動で作成されているはずなので、ページのカテゴリの設定から設定します。(このユーザーセグメントタグは通常のタグとは異なります。)



今回はページに設定しましたが、他のコンテンツにも同じようにユーザーセグメントのタグを設定することができます。

ユーザーセグメントの割り当て結果を確認するため、トップページにユーザーセグメントコンテンツディスプレイポートレットを配置し、「海外旅行保険興味あり」用のコンテンツ、当てはまらない場合のコンテンツを設定します。




これで設定完了です。「海外旅行保険興味あり」ではないユーザーにとっては、トップページはこのように見えるはずです。



Boy Twenty-Fiveとしてログインすると、確かにトップページはこうなっていますが、



バナーのリンクをクリックして海外旅行保険説明ページに遷移し、「海外旅行保険興味あり」のスコアを追加することを3度繰り返すと…



トップページのコンテンツが変わりました。Boy Twenty-Fiveが「海外旅行保険興味あり」のユーザーセグメントに振り分けられたことがわかります。

Audience Targetingでは、このように動的にユーザーをセグメントに振り分けることもできるのです。

キャンペーン

最後に、Audience Targetingのもう1つの機能であるキャンペーンについて紹介したいと思います。

キャンペーンでは特定のユーザーセグメントを対象として、一定期間コンテンツを表示させることができます。また、一部のアクションをユーザーセグメント別にトラッキングすることもできます。今回は「旅行保険見積もりフォームへの入力」をトラッキングしてみます。トラッキング対象とするためのフォームをWEBフォームポートレットで作成し、ポートレットのルック&フィールからポートレットのIDを確認しておきます。



システム管理→編集→ユーザー解析へと移動し、「キャンペーンの追加」をクリックしてキャンペーンを追加します。対象とするユーザーセグメントは「海外旅行保険興味あり」のユーザーセグメントとします。キャンペーンの有効期間と優先度を入力します。


キャンペーンにおける追跡対象のアクションとしては以下から複数を設定できます。

  • サイトページ
    • 参照

  • WEBフォーム
    • 参照/入力/送信

  • YouTube映像
    • 表示/バッファリング/再生(一部)/一時停止/再生(完了)

  • コンテンツ
    • 参照

  • リンク
    • クリック

今回は先ほど作成したWEBフォームの入力をトラッキングするための設定だけを追加し、保存します。


これでキャンペーンを作成することができました。

キャンペーン関連のポートレットとしては、対象となるキャンペーンに当てはまる場合に特定のコンテンツを表示する「キャンペーン・コンテンツ・ディスプレイ」ポートレットがあります。今回は省略しますが、一定期間だけを対象として特定ユーザーセグメントにコンテンツを表示したいようなケースにはこちらが便利かもしれません。

では、アクションのトラッキングについて確認してみましょう。Boy Twenty-Five、Boy Forty、Girl Twenty-Fiveという3ユーザーそれぞれで見積もりフォームのラジオボタンをクリックしてみます。入力をトラッキングできるかの確認なので、送信までは行いません。


それぞれのユーザーで操作が終わったら、管理者としてログインしてキャンペーンのレポートを見てみます。トラッキング動作のレポートとキャンペーン・コンテンツ・ディスプレイポートレットによるコンテンツビューのレポートがありますが、今回関連するレポートは前者です。

更新してからアクセスすると、



このようなレポートが表示されます。フォーム入力が3回記録されていることを確認しましょう。また、内訳としてどのユーザーセグメントのユーザーによるアクションであるかということもわかるようになっています。キャンペーンがどれだけ想定通りに効果を発揮したか、ということを計測するためにこのレポートを役立てることができます。

まとめ

2つの記事でAudience Targetingの基本的な使い方はご紹介できたかなと思います。ポータルへのアクセスユーザーに対してよりパーソナライズされた情報を提供する機能として、ぜひ試して見てください。

Monday, November 2, 2015

Alfresco勉強会#30でJavaScriptのデバッグについて発表しました

こんにちは、かわべです。前回のLiferayに関するブログで、続きを書きます!なんて書いておいて、まだ書けていなくてすみません。必ずや近いうちに…。
さて、今日は先日開催したAlfresco勉強会の振り返りブログを書こうと思います。なんと記念すべき第30回でした。

Alfrescoとはそもそもどういうものか?という入門編から、先日弊社が開催したセミナでお話したアクティビティログ解析といった発展編まで、盛りだくさんな内容となりました。
そんな中、私はAlfrescoのJavaScriptのデバッグについて発表しました。JavaScriptまわりの開発をしているとき、どういうふうにロガーを仕込むとどこにログが出力されるのか、ということがわかっていなくて苦しんだことがあるので、まとめてみました。カスタマイズをする場合には参考にしてみてください。


次の勉強会は2016年1月27日(水)に開催します。以下のリンクからお申し込みいただけます。

第31回Alfresco勉強会

発表されたい方や、こんなテーマでの発表が聞きたいなどのリクエストがある方はぜひお気軽にconnpassのフィードに投稿してください。ご参加お待ちしております。

Monday, September 14, 2015

LiferayのAudience Targetingでユーザーセグメントを定義して使ってみよう

こんにちは、最近自動車の運転を練習しているかわべです。カーシェアで早朝にちょこっと運転してパン屋さんでおいしいパンを買って帰り、家でゆっくり食べる、という夢があるのですが、先日練習したところどこにも駐車できずに疲れて帰ってきました。先は長そうです。

さて、本日はLiferay社が開発しており、Marketplaceから無償で入手してインストールすることができるAudience Targeting(オーディエンス・ターゲティング)という機能について紹介したいと思います。日本語では「ユーザー解析」という名称に訳されている、複数のポートレットやフックから構成されるプラグインです。2回に分けて記事にしようと考えているので、前半である当記事では機能の説明、インストール方法、そしてユーザーセグメントの利用方法について説明したいと思います。

Audience Targetingで何ができるようになる?

デフォルトのLiferayの機能でも、ユーザーが所属する組織やサイト、割り当てられたロールなどによって特定のコンテンツやページを表示する/しないという制御をすることはできます。これは権限のないユーザーからコンテンツを保護するためのポータル製品としての機能と言えます。
Audience Targetingを利用すると、ユーザーに最適なコンテンツを動的に表示させる更に細かいルールの適用が可能になります。例を挙げると、

  • 30代の男性ユーザーにはコンテンツA、40代の男性ユーザーにはコンテンツB、それ以外のユーザーにはコンテンツCを表示する
  • 午前6時から午前10時までにアクセスしたユーザーにはコンテンツEを表示する
  • コンテンツDを10回以上閲覧したユーザーをキャンペーンEの対象とし、登録フォームへの入力率を一般ユーザーと比較する

などです。ポータルサイトとしての可能性が広がりそうな機能だと思いませんか?

これらの表示ルールの一部は、EE版で提供されていたDroolsルールエンジンとポートレットを応用すれば以前から実現可能でしたが、Droolsではルール適用のためにスクリプトを記述する必要があり、そこに導入のハードルを感じた方もいるかもしれません。一方、Audience Targetingでは管理画面からのUI操作だけでルールが設定できるので、コーディング知識は必要ありません。

それではインストールから順を追って使い方を見ていきましょう。以下ではLiferay Portal 6.2 EE SP12をTomcatバンドルでMacにインストールしたものを使用しています。

Audience Targetingのインストール

Audience Targetingに限った話ではありませんが、Marketplaceにあるプラグインをインストールするには方法が2つあります。
  • Liferayの起動中に管理者としてログインし、コントロールパネル→MarketplaceでLiferay.comのアカウントを紐付けて画面上から購入、インストールする
  • ブラウザでMarketplaceにアクセスし対象のプラグインを購入後、ダウンロードし、ダウンロードしたファイルをLiferayのdeployフォルダに配置する

今回は後者の方法で進めます。Liferay.comに登録した自分のアカウントでAudience Targetingを購入(無料)し、プロフィールの「購入済アプリケーション」からダウンロードします。Audience Targeting EE.lpkgというファイルがダウンロードされます。Audience TargetingにはCE版も用意されているので、CEを利用されている場合はそちらを入手してください。
deployフォルダはLiferayを展開したフォルダ配下に存在するはずなので、その中にこのファイルを置きます。と、ここで注意。
通常、LiferayのプラグインはLiferayが起動していてもホットデプロイすることが可能ですが、Audience Targeting EE.lpkgはLiferayが停止しているときにdeployフォルダに入れ、その後Liferayを起動してください。
そうしないとエラーログが出力されてデプロイに失敗してしまいます。
また、これは試している中で気づいたことですが、deployフォルダにプラグインを入れて起動が完了した後、もう一度Liferayを停止→起動してください。そうしないとドックバーが一部無効になってしまうようです。(使えるようなら問題ありませんが、例えばコンテンツ追加のための「+」を押しても反応しなかったりしたら再起動しましょう。)

起動と停止をするにあたり、ついでに停止中に<TOMCAT_DIR>/bin/setenv.shでJVMのメモリサイズ設定を確認し、デフォルト値のままになっている場合は値を大きくしましょう。Audience Targetingを使用する場合、最低でも"-Xmx2048m -XX:MaxPermSize=512m"を割り当てることが推奨されているようです。

無事にインストールが完了すると、管理者としてログインした際にドックバーにシミュレータ用のボタンが追加されているはずです(クリックするとこんな風に左サイドペインが開きます)。



また、システム管理→編集へと移動すると、「ユーザー解析」という項目が追加されています。次はここから操作を行い、ユーザーセグメントを追加していきます。

ユーザーセグメントとは?設定方法は?

名前から想像が付くとおり、ユーザーを特定の条件に従ってセグメント化したものです。このセグメントごとにコンテンツの表示ルールやキャンペーンが設定できます。今回は、保険会社の加入者向けポータルサイト「Aegif Demo Insurance」である範囲の年齢と性別を条件としたユーザーセグメントを作成するという例を試してみたいと思います。
管理者としてログインし、対象サイトのシステム管理→編集→ユーザー解析へ移動すると、「ユーザーセグメントの追加」ボタンがあるはずなのでクリックします。すると、どのようなルールでユーザーセグメントを作成するか、画面から作成することができます。標準で用意されているルールは以下です。

ソーシャル(Facebook連携ログインを利用する場合のみ有効。Facebookの各項目を使用した分類)
  • 学歴
  • 特定ページへの「いいね!」有無
  • 性別
  • つながり
  • 年齢

振る舞い(Liferayポータル内で訪れたコンテンツによる分類)
  • 閲覧済みコンテンツ
  • スコア(タグのついたコンテンツの訪問回数を集計)
  • 閲覧済ページ

ユーザー属性(Liferayに登録した属性などによる分類)
  • サイトメンバー
  • 性別
  • サイトロール
  • ユーザーグループ
  • ログインの有無
  • 組織ロール
  • 組織メンバー
  • 標準ロール
  • 年齢

セッション属性(IPアドレスなどアクセス元による分類)
  • ロケーション
  • ブラウザ
  • OS
  • 時間
  • デバイス
これらのルールはもちろん組み合わせて利用することが可能で、必要な項目をドラッグし、希望する設定値を追加するだけでOKです。今回は「21-35歳男性」というユーザーセグメントを以下のように作成してみました。



ユーザーセグメントコンテンツディスプレイの利用

このユーザーセグメントに当てはまる場合のみ特定のコンテンツが表示されるように、「ユーザーセグメントコンテンツディスプレイ」ポートレットをページに配置してみましょう。今回はTOPページに置いてみます。ドックバーの「+」(追加)をクリックし、対象のポートレットをページにドラッグします。



右上の設定アイコンから、以下の条件で表示されるように設定して、保存します(日本語がいまいちだったので英語表示にしています)。
  • ユーザーが「21-35男性」のセグメントに当てはまる場合、「自動車保険へのリンク」というWEBコンテンツを表示する」
  • それ以外の場合、「保険見直しへのリンク」という別のWEBコンテンツを表示する


ところで上の画面キャプチャからわかるように、セグメントは複数を同時に利用することが可能で、セグメントの「すべてに」または「どれか1つに」該当する場合、という設定をすることができます。更に「+」を押すとセグメントの判断を追加できるため、「AならA', BまたはCならB'、Dなら…」というような複雑な表示設定も可能です。また、表示させるコンテンツもWEBコンテンツだけに限らず、ドキュメントやブログ記事など他の種類にも対応しています。

さて、それでは実際にユーザーセグメントが有効になっていることを確認してみましょう。以下3人のテストユーザーを作成し、Aegif Demo Insuranceに順番にログインしてみることにします。

1. Boy Forty 40歳男性



2. Boy Twenty-Five 25歳男性


3. Girl Twenty-Five 25歳女性


ちゃんと設定したユーザーセグメントに従ってコンテンツの表示がされました!
また、いちいちそれぞれのセグメントに該当するユーザーで入りなおさなくとも、管理者など権限があるユーザはドックバーのシミュレータボタンをクリックすると「このユーザーセグメントに属するユーザーにはどういうページに見えるのか」というのを確認することができます。


ユーザーセグメントリポート

各ユーザーセグメントに当てはまるユーザーがどのコンテンツを閲覧したかを表示する機能も備わっています。システム管理→編集→ユーザー解析→ユーザーセグメントに移動し、それぞれのユーザーセグメントで操作→リポートを選択すると、「そのユーザーセグメントに当てはまるユーザーが閲覧したコンテンツ」を見ることができます。



デフォルトでは1日に1度更新されますが、更新ボタンをクリックするとその都度更新されます。これもユーザーの動向を分析するために活用することができそうです。

次回予告

ユーザー分析にはまだ紹介できていない機能があります!後編として、ユーザーセグメントのタグ、そしてキャンペーン機能について近いうちに紹介したいと思います。

Monday, September 7, 2015

Enterprise API Hack night#1 に行ってきました!

コレステロール値に要観察の結果がでてしまった(前から出ていた?)ナクラです。

先週、木曜日(9/3)に第一回Enterprise API Hack nightに行ってきました。
正直な話、当日までこういうものがあるのは知らなかったのですが、
弊社の自社開発チームのメンバが、「行きたいのに行けない」と言うので
代わりにちょっと様子を見ようと気楽なノリでいってしまいました。

さて、皆さんEnterprise APIってなんだと思いますか?
私も全然こういう言葉に感度がなくて何なのだろうと思っていました。
「Enterprise」は日本語に訳せば「企業」
APIはApplication Programming Interfaceの略称ですので、
企業向けアプリケーションソフトウェアのインタフェースということでしょうか。
結局明確な定義はちゃんと理解できなかったのですが、
最初の登壇者の事務局の加藤さんは
B2BのAPIの普及を進めていきたいという話をされていたので、
大まかな捉え方としては、B2B向けのAPIがEnterprise APIで問題なさそうです。
とはいえ、公開APIの話もあったので、完全にB2Bに閉じたものでもないようです。

さて、このHack Nightでは3つの講演がありました。それぞれ簡単に感想を書いていきたいと思います。

講演1:ビジネスのデジタル化におけるAPI活用事例

apigee(アピジーと読むらしいです)の清水さんが話されました。
グローバルの世界では、今APIの活用がどんどんと進んでいるらしいです。
Walgreens、AP通信社、SalesForce、Dell、BECHTELなどで行われているAPIの活用事例を紹介してくださいました。
とくにBECHTELではipadを使った工事管理の事例で、Appleのipad事例にもなっているそうです。
こういった大規模なAPI群を管理するためのAPIマネジメントプラットフォームが重要になってきているという話でした。(apigeeもこの分野を取り扱うソフトウェア(?)のようです)

講演2:APIがNTTコミュニケーションズのサービスを変える!

NTTコミュニケーションズの緒方さんが話されました。
現在NTTコミュニケーションズでAPIの代理店向けのAPIが公開されはじめていて
代理店のポータルシステムとNTTコミュニケーションの情報を管理するシステムとが連携して、
ポータル側で契約情報や故障情報などがリアルタイムで確認できるようなことになっているそうです。
APIの利用を促進するために、
標準化ルールの設定、APIの管理、ニーズを捉えたAPIの作成が必要だと言う話をしていただきました。

講演3:IoT/M2M分野におけるWeb APIの使い方とデモ 

MOONGIFTの中津川さんが話されました。
M2Mについて最近はmachine to machineでは無くmachine to cloud to machine
M2C2Mになっているという話で、cloudの部分ではブラウザなどでアクセスして情報を閲覧したりできるような形になっているということでした。
M2Mは利用目的によっていろいろな方法がとれるので、ネットワークの設計を慎重に検討して、最適なネットワークを選ぶことが大切だというお話でした。
IoTのWeb APIの話では、大量のデバイスからデータを取って、データを蓄積するビックデータ型と
ビーコン系のデバイスとスマフォを通信させてるスマートフォン型の利用方法があり、それぞれのメリットでメリットの話も聞けて、とてもためになりました。
また、音声入力でチャットしたり、玄関の電球を灯けたりするデモも見せてもらいました。
今更ながら、ラズベリーパイが欲しくなってしまいました!




講演の後にはライトニングトークがあって、何人かの方が発表されていましたが、
お酒が振る舞われた後だったので正直あまり覚えていません(汗)



弊社もNemakiWareやCmisSyncなどAPIを活用した自社ソフトウェアがありますので、
この流れにおいていかれないように、今後もEnterprise API Hack Night は「要チェックや!」と思いつつも、コミュニケーション力を高めていかないと、なかなかコミュニティに入り込めないなと、ひとしきり反省しながら帰りました。

興味を持っていただいた方はツイッターで#entapihackのハッシュタグで検索してみてください。

また次回参加したらブログに感想を書きたいと思います
ではでは。

Tuesday, September 1, 2015

Alfresco勉強会#29 ユーザのアクティビティを可視化してみる

こんにちは。錦織選手が全米オープンで初戦敗退と聞いて凹んでいるてらしたです。足のケガで出場できるかどうかも微妙だった去年が準優勝で、万全と言っていた今年が初戦敗退とはわからないもんですねぇ。

さて、開催から1週間も経ってしまいましたが、先日29回目のAlfresco勉強会が開催されました。今回は弊社の戸谷がAlfrescoでのユーザアクティビティの可視化について発表しました。

Alfrescoにはユーザがサイトに参加した、ファイルをアップロード/ダウンロードした、といった操作内容を記録して表示するためのアクティビティという機能があります。標準機能でも、アクティビティをダッシュレットに表示したり、日次でメールで通知したりすることができるのですが、それをもうちょっとわかりやすく可視化できたらおもしろいんじゃないか、という内容でした。

具体的には、LogstashでAlfrescoのREST APIを叩いてアクティビティを取得 → Elasticsearchに登録 → Kibanaで見てみる、という話です。この内容を参考にして、収集するアクティビティや見せ方を色々応用していったらおもしろそうです。ご興味があればぜひ試してみてください。


次回のAlfresco勉強会は10月28日(水)です。たくさんの方のご参加お待ちしております。参加登録は以下のリンクからお願いします。

第30回Alfresco勉強会

もちろん発表も大歓迎です。発表はできないけどこういう内容が知りたい、こんなところで困っているから教えてほしい、といった要望があればconnpassのフィードに投稿していただければと思います。

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連携の機能を利用してユーザの管理を行うと作業が楽になるでしょう!