PloneLDAPの利用 [Plone3.3]
アカウント管理の簡単化のため、認証に LDAP を用いる。グループも同様に LDAP のグループを参照できるように設定する。
インストール
$PLONE_INSTANCE : /usr/local/Plone/zinstance (Plone のインスタンス)
LDAPMultiPlugins のインストール
LDAPMultiPlugins プロダクトを用いることで、LDAPUserFolder プロダクトが利用できるようになる。インストールは解凍後、開発用ソースディレクトリに Products.LDAPMultiPlugins という名前で格納する。ダウンロードは http://pypi.python.org/pypi/Products.LDAPMultiPlugins より行える。
# tar zxvf Products.LDAPMultiPlugins-1.8.tar.gz # mv Products.LDAPMultiPlugins-1.8 $PLONE_INSTANCE/src/Products.LDAPMultiPlugins
次にインスタンス内の buildout.cfg を設定する。
eggs = Plone : + Products.LDAPMultiPlugins develop = : + src/Products.LDAPMultiPlugins [versions] : + Products.LDAPMultiPlugins = 1.8
最後に設定を反映する。
# bin/buildout # bin/plonectl stop; bin/plonectl start
LDAPUserFolder のインストール
LDAPUserFolder プロダクトを用いることで ユーザ・グループ管理を LDAP を用いて行うことができる。インストールは解凍後、開発用ソースディレクトリに Products.LDAPUserFolder という名前で格納する。ダウンロードは http://pypi.python.org/pypi/Products.LDAPMultiPlugins より行える。
# tar zxvf Products.LDAPUserFolder-2.13.tar.gz # mv Products.LDAPUserFolder-2.13 $PLONE_INSTANCE/src/Products.LDAPUserFolder
次にインスタンス内の buildout.cfg を設定する。
eggs = Plone : + Products.LDAPUserFolder develop = : + src/Products.LDAPUserFolder [versions] : + Products.LDAPUserFolder = 2.13
Python に python-ldap モジュールがインストールされている必要がある。また、日本語を扱う場合は LDAPUserFolder の文字コード設定を変更しておく必要がある。LDAPUserFolder 内の utils.py で以下のように設定すればよい。
- encoding = 'latin1' + encoding = 'utf-8'
また LDAPUserFolder を Plone 上からインストールするとサイトが壊れるため、Plone 上からインストールできないようにしておく。LDAPUserFolder 内の configure.zcml を次のように変更する。
- <!-- Only install CMFLDAP bits if CMFCore is installed --> - <configure - zcml:condition="installed Products.CMFCore"> - - <cmf:registerDirectory name="cmfldap"/> - - <genericsetup:registerProfile - name="cmfldap" - title="LDAPUserFolder CMF Tools" - description="Adds LDAP support to the CMF." - provides="Products.GenericSetup.interfaces.EXTENSION" - for="Products.CMFCore.interfaces.ISiteRoot" - /> - - </configure>
最後に設定を反映する。
# bin/buildout # bin/plonectl stop; bin/plonectl start
PloneLDAP のインストール
PloneLDAP プロダクトを用いることでグループメンバー一覧などの機能を利用できる。インストールは解凍後、開発用ソースディレクトリに Products.PloneLDAP という名前で格納する。ダウンロードは http://pypi.python.org/pypi/Products.PloneLDAP より行える。
# tar zxvf Products.PloneLDAP-1.1.tar.gz # mv Products.PloneLDAP-1.1 $PLONE_INSTANCE/src/Products.PloneLDAP
次にインスタンス内の buildout.cfg を設定する。
eggs = Plone : + Products.PloneLDAP develop = : + src/Products.PloneLDAP [versions] : + Products.PloneLDAP = 1.1
最後に設定を反映する。
# bin/buildout # bin/plonectl stop; bin/plonectl start
LDAP 接続の設定
Plone LDAP Plugin の追加
ZMI で acl_users を開き Plone LDAP Plugin を追加する。
<例> ID : ldap LDAP Server : ldapserver.example.jp UseSSL : LDAP over SSL Read-only : ON
他の項目は後ほど設定するため、ここでは最低限(サーバのアドレス関係のみ)設定しておく。Fedora Core 等では /etc/openldap/ldap.conf に次の1行を追加することで SSL 鍵の確認なしに ldaps 接続ができるようになる。
TLS_REQCERT never
LDAP Attribute とのマッピング
上で追加した Plone LDAP Plugin 内に追加された LDAPUserFolder の設定を行う。acl_users/ldap/acl_users の LDAP Schema タブを開き、Add LDAP schema item 欄に追加することで LDAP Attribute とのマッピングを行うことができる。たとえばユーザの名前に LDAP ツリーの cn;lang-ja を用いる場合は次のように追加する。Map to Name 欄は LDAP の cn;lang-ja を Plone の fullname にマッピングするという意味である。
LDAP Attribute Name : cn;lang-ja Friendly Name : Canonical Name Multi-valued : No Map to Name (optional) : fullname
LDAP ツリーの指定
次に LDAPUserFolder の Configure タブに戻り LDAP の構造等の設定を行う。
Title : User Folder (分かり易い名前にしておく) Login Name : UID (uid) User ID Attribute : UID (uid) RDN Attribute : UID (uid) (ユーザ名として用いる LDAP Attribute の指定) Users Base DN : ou=people,dc=example,dc=jp (ユーザのエントリを検索する Base DN を指定する) Scope : ONELEVEL (検索対象範囲) Group storage : Groups stored on LDAP server (Plone のグループと LDAP のグループのマッピングをする場合) Group mapping (Applies to LDAP group storage only) : Manually map LDAP groups to Zope roles (手動マッピングを指定する) Groups Base DN : ou=groups,dc=example,dc=jp (グループのエントリを検索する Base DN を指定する) Scope : ONELEVEL (検索対象範囲) Manager DN : cn=ploneadmin,ou=users,dc=example,dc=jp (LDAP のエントリを検索するためのユーザ) Password : **** (上記ユーザのパスワード) Manager DN Usage : Always (グループ検索にも利用するので Always とする) Read-only : ON (LDAP データを変更されないように読み取り専用とする) User object classes : top,person User password encryption : crypt Default User Roles : Anonymous (ログインしたユーザが得るロール)
Manager DN はユーザと Plone に利用するグループのエントリを読み取る権限があればよい。
LDAP サーバの指定
Plone LDAP Plugin の追加時に設定済みのはずであるが、変更等する場合は LDAPUserFolder の LDAP Servers タブで LDAP サーバを指定する。Add LDAP Server 欄に次のように入力し追加すればよい。
Server host, IP or socket path : ldapserver.example.jp Server port : 636 Protocol : LDAP over SSL Connection Timeout : 5 seconds Operation Timeout : No timeout
接続成功すれば LDAP Servers 欄に次のように表示される。
Currently connected to: ldaps://ldapserver.example.jp:636
グループとロールのマッピング
LDAP上のあるグループに対して、ロールを割り当てることができる。acl_users/ldap/acl_users の Groups タブを開くと LDAP 上のグループ一覧が表示される。例えば test-group というグループに対して、Editor ロールを与えるには、Add LDAP group to Zope role mapping 欄で次のように設定すれば良い。
Map LDAP Group... : test-group ... to Zope Role : Editor
LDAP接続の有効化
acl_users/ldap を開き、有効化する Plone LDAP Plugin の機能を設定する。
- Authentication
認証に LDAP を用いるかどうかを設定する。
Authentication : ON
- Reset Credentials
Reset Credentials : OFF
- Group_Enumeration
有効にすることで、LDAP に登録されているグループ名を検索できるようになる。検索値は cn の値となる。グループタイトル、説明は Plone 上で付加することは可能である。ただし、グループを一覧表示(gtool/listGroups を利用)する場合は、LDAP に登録されているグループはすべて表示されるため、必要なグループに制限するにはテンプレートなどで対応が必要となる。
Group_Enumeration : ON
- Group_Introspection
有効にすることで LDAP グループに登録されているメンバー一覧を表示することができる。
Group_Introspection : ON
- Group_Management
Group_Management : OFF
- Groups
有効にすることで、LDAP に登録されているグループを利用できるようになる。Plone 上のグループとのマッピングではなく直接利用できるようになる。
Groups : ON
- Properties
有効にすることで、LDAP Attribute とのマッピングを行った属性(氏名など)が Plone 上から利用できるようになる。ただし、acl_users/ldap → Properties の設定ページで、ldap を Active Plugins の最上位とする必要がある。
Properties : ON
- Role_Enumeration
Role_Enumeration : OFF
- Roles
有効にすることで、グループとロールのマッピング機能等が利用できるようになる。
Roles : OFF
- User_Adder
User_Adder : OFF
- User_Enumeration
有効にすることで、LDAP に登録されているユーザを検索できるようになる。ただしこの項目のみでは、ユーザ ID での検索のみであり、フルネームの検索には Properties を有効にする必要がある。
User_Enumeration : ON
- User_Management
User_Management : OFF