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

No comments: