« Google Mail Checker Plus いい感じです | Main | ServersMan@VPS(9) phpLDAPadminでユーザーの追加を行う »

2010.07.18

ServersMan@VPS(8) OpenLDAP+Apache2.2

ldifファイルに2階層以上の組織構造を記述。例えば、こんな感じ。

dn: dc=testdomain,dc=co,dc=jp
objectClass: dcObject
objectClass: organization
o: testdomain
dc: testdomain

dn: ou=org01,dc=testdomain,dc=co,dc=jp
objectClass: top
objectClass: organizationalUnit
ou: org01

dn: ou=staff,ou=org01,dc=testdomain,dc=co,dc=jp
objectClass: top
objectClass: organizationalUnit
ou: staff

dn: ou=tempstaff,ou=org01,dc=testdomain,dc=co,dc=jp
objectClass: top
objectClass: organizationalUnit
ou: tempstaff

dn: ou=org02,dc=testdomain,dc=co,dc=jp
objectClass: top
objectClass: organizationalUnit
ou: org02

dn: ou=staff,ou=org02,dc=testdomain,dc=co,dc=jp
objectClass: top
objectClass: organizationalUnit
ou: staff

dn: ou=org03,dc=testdomain,dc=co,dc=jp
objectClass: top
objectClass: organizationalUnit
ou: org03

dn: ou=staff,ou=org03,dc=testdomain,dc=co,dc=jp
objectClass: top
objectClass: organizationalUnit
ou: staff

dn: cn=testuser01,ou=staff,ou=org01,dc=testdomain,dc=co,dc=jp
objectClass: inetOrgPerson
uid: testuser01
userPassword: password01
sn: testSn
cn: testuser01
description: developer

dn: cn=testuser02,ou=tempstaff,ou=org01,dc=testdomain,dc=co,dc=jp
objectClass: inetOrgPerson
uid: testuser02
userPassword: password02
sn: testSn
cn: testuser02
description: tester

dn: cn=testuser03,ou=staff,ou=org02,dc=testdomain,dc=co,dc=jp
objectClass: inetOrgPerson
uid: testuser03
userPassword: password03
sn: testSn
cn: testuser03
description: org02developer

組織org01の下にstaffとtempstaffという組織を追加。
組織org02の下にstaffという組織を追加。
組織org03の下にstaffという組織を追加。

org01/staff の下にメンバーを1人、org01/tempstaff の下にメンバーを1人、org02/staff の下にメンバーを1人登録するような感じのldifファイルです。

ldapadd -v -h localhost -x -D cn=ldapadmin,dc=testdomain,dc=co,dc=jp -w ******** -f test.ldif

ってな感じでデータを取込。phpLDAPadmin でログインすると、階層構造がいい感じで作られているのがわかります。

Apache用に以下のような設定を記述してみます。

<Location /test1/>
  AuthType Basic
  AuthName "LDAP Auth Test"
  AuthBasicProvider ldap
  AuthzLDAPAuthoritative on
  AuthLDAPGroupAttributeIsDN off
  AuthLDAPUrl ldap://localhost/dc=testdomein,dc=co,dc=jp?uid
  AuthLDAPBindDN cn=ldapadmin,dc=testdomein,dc=co,dc=jp
  AuthLDAPBindPassword ********
  Require ldap-attribute description=developer
</Location>

<Location /test2/>
  AuthType Basic
  AuthName "LDAP Auth Test"
  AuthBasicProvider ldap
  AuthzLDAPAuthoritative on
  AuthLDAPGroupAttributeIsDN off
  AuthLDAPUrl ldap://localhost/dc=testdomein,dc=co,dc=jp?uid
  AuthLDAPBindDN cn=ldapadmin,dc=testdomein,dc=co,dc=jp
  AuthLDAPBindPassword ********
  Require ldap-attribute description=tester
</Location>

<Location /test3/>
  AuthType Basic
  AuthName "LDAP Auth Test"
  AuthBasicProvider ldap
  AuthzLDAPAuthoritative on
  AuthLDAPGroupAttributeIsDN off
  AuthLDAPUrl ldap://localhost/dc=testdomein,dc=co,dc=jp?uid
  AuthLDAPBindDN cn=ldapadmin,dc=testdomein,dc=co,dc=jp
  AuthLDAPBindPassword ********
  Require ldap-attribute description=developer description=tester
</Location>

本当は、組織情報(ou)を用いてアクセス制御を行いたいのですが、ldap-groupやldap-filterの設定がどうにもうまくいかない(設定方法がよくわからない)ので、かなり妥協しています。
description属性を利用して、無理矢理グループ化。組織情報を無視していますね(苦笑)。

まぁ、とりあえず、上記のような設定を行うと、
testuser01 ⇒ test1/test3にアクセス可能
testuser02 ⇒ test2/test3にアクセス可能
testuser03 ⇒ アクセス不可
といった感じでアクセス制限をかけることが出来るようです。

ldap-attributeで or 条件を記述する場合、半角スペースで区切って複数指定すればOKってところに注意。ldap-attributeを複数行指定すると、上手く動きませんでした。

ちなみに、dn:で記述しているcnの値と、cn:で記述している値とが違っている場合、

ldapadd: Naming violation (64)
       additional info: value of naming attribute 'cn' is not present in entry

というエラーが出てしまいますので注意(^^;

|

« Google Mail Checker Plus いい感じです | Main | ServersMan@VPS(9) phpLDAPadminでユーザーの追加を行う »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/48906657

Listed below are links to weblogs that reference ServersMan@VPS(8) OpenLDAP+Apache2.2:

« Google Mail Checker Plus いい感じです | Main | ServersMan@VPS(9) phpLDAPadminでユーザーの追加を行う »