Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (3,768)  
Tera Term  (1,863)  
CrystalDiskInfo  (1,753)  
HandBrake Japanese Language Version  (1,682)  
CrystalDiskMark  (840)  
FFFTP  (808)  
ffdshow  (757)  
MergeDoc  (629)  
mixfont-mplus-ipa  (619)  
10  TortoiseSVN  (517)  
11  FreeMind  (445)  
12  BathyScaphe  (421)  
13  Amateras  (380)  
14  Boookends  (375)  
15  SMPlayer  (370)  
More >>

LDAPによるApacheの認証と認可

2007年11月09日 11:01 Keith-Winston(2007年10月31日(水)) 1 2 3 4 5

グループのメンバ

 次に紹介するディレクティブセットは、Require ldap-groupディレクティブで指定されているグループのプライマリまたはセカンダリメンバであるユーザに対し、カレントディレクトリへのアクセスを許可する。

 このグループの設定は、NISから変換されたディレクトリのスキーマ設計ゆえに非常に難解かもしれない(私の場合もそうだった)。初めに示したLDIFレコードを見返してみるとgidNumber属性が420になっていて、これと同じ値が私のディレクトリの“infosys”グループに割り当てられているのがわかる。これはユーザのプライマリグループに相当する。ただし、各グループのLDAPエントリには、そのグループのセカンダリメンバのユーザだけがmemberUid属性として記される。以下に、グループレコードの一部を示す。

dn: cn=infosys,ou=Group,dc=company,dc=com
objectClass: posixGroup
gidNumber: 420
memberUid: user1
memberUid: user2
memberUid: user3
...

 ここでもう1つのテストとして、グループのプライマリユーザを取り出すためのRequire ldap-attributeが必要になる。グループ自体にはプライマリユーザが記されていないからである。結果、グループ認証のためのApacheディレクティブは以下のようになる。

Order deny,allow
Deny from All
AuthName "Company.com Intranet"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPUrl ldap://ldap.company.com/ou=People,dc=company,dc=com?uid
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
Require ldap-group cn=infosys,ou=Group,dc=company,dc=com
Require ldap-attribute gidNumber=420
Satisfy any

 AuthzLDAPAuthoritative onはデフォルトの設定なので省略可能であるが、やはり設定内容を明示するために残してある。

 AuthLDAPGroupAttribute memberUidは、LDAPグループレコードのどの属性をUidとマッチングさせるか(ここではmemberUid)を指定する。グループレコードには、グループの(プライマリでない)メンバ用にmemberUid属性が1つずつ含まれている。

 AuthLDAPGroupAttributeIsDN offにより、Apacheはグループメンバシップのチェックにクライアントの識別名を使用することになる。それ以外の場合にはユーザ名が使用される。私のOpenLDAPディレクトリでNISから移行したのはユーザ名だけであり、この設定はデフォルトで“on”になっているので、“off”にする必要があった。LDAPディレクトリは全体の識別名を格納している可能性があるので、場合によっては自分のディレクトリに基づいてこの設定を変更する必要がある。

 Require ldap-groupの行は、“infosys”グループのメンバにアクセスを許可するものである。グループが複数になる場合は、グループごとにディレクティブを追加すればよい。

 Require ldap-attribute gidNumber=420は、処理の対象がグループ420、つまり“infosys”グループのプライマリユーザであることを示している。この条件がなければ、プライマリユーザのアクセスは拒否される。また、複数のグループを扱う場合は、グループごとにディレクティブを用意する。

 ここではSatisfy anyディレクティブが必要である。複数の条件をテストして1つでも条件を満たせばアクセスを許可するようにしたいからである。

最終更新:2008年01月09日 17:07
SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.