Plone(Zope)のroleとLDAPのグループ
Plone(Zope)って、ロール毎にいろいろ出来ることが決まっています。このロール、通常のZopeでユーザを追加するときは、この人はManager,この人はMemberって具合に割り振っていくんですが、LDAPに認証を任せた場合にどうやるんだと熱烈研究。いろいろ調べたんですが、LDAPUserFolderのREADMEとldifのサンプルが一番わかりやすかったのでちょっとまとめます。
LDAPに適当なouを追加
このouでグループを定義してあげます。こんなldifで作成。
dn: ou=group,dc=hoge,dc=org objectClass: organizationalUnit objectClass: top ou: Group
上記で作成したouにグループの定義を追加
member属性か、uniqueMember属性を複数もてるオブジェクトならなんでもいいらしいです。READMEにはgroupOfUniqueNamesみたいなって書いてあったので正直にそれを選択。でもって、このオブジェクトのcnにZopeでのロールを定義。下記の例ではManagerロールを定義しています。
dn: ou=group,dc=hoge,dc=org cn: Manager objectClass: groupeOfUniqueNames objectClass: top
作成したグループ名称定義にメンバを追加
上記で作成したdn:cn=Manager,ou=group,dc=hoge,dc=orgにManagerとして追加したいユーザのdnをuniqueMemberとして追加します。
uniqueMember: cn=hoge_hoge,ou=Sales,dc=hoge,dc=org
acl_usersでroleとLDAPのグループを自動的にマッチさせる
ZMIでPloneSiteのacl_userをクリック→追加したLDAPプラグインをクリック→Contentsタブをクリック→acl_usersをクリック。
Groups base DNに上記で作成したグループのouを指定。上記の例だと、
ou=group,dc=hoge,dc=org
ですね。それと、Group Storageに"Group stored on LDAP server"を選択、Group mappingに"Automatically map LDAP groups to Zope roles"を選択。これでApply Changesをクリック。