Skip to content

Instantly share code, notes, and snippets.

@kui
Created November 22, 2011 05:20
Show Gist options
  • Save kui/1384962 to your computer and use it in GitHub Desktop.
Save kui/1384962 to your computer and use it in GitHub Desktop.
実習: Apache による LDAP 認証

実習: Apache による LDAP 認証

環境

  • VMWare Workstation
  • ホストOS: Windows XP
  • ゲストOS: CentOS 5.7

構成図

LDAP実習構成図

手順

上記構成を実現するまでの手順を示す。

1. Apache のセッティング

# yum install httpd
# service httpd start
# mkdir /var/www/html/private
# cat > /var/www/html/private/index.html
<html><body><h1>hello apache with ldap</h1></body></html>

ブラウザを立ち上げて、http://<ip_addr>/private にアクセスしてみる。だめだったときはファイアウォールをチェック。

2. OpenLDAP のセッティング

2.1 インストール、設定、起動

yum によるインストールを行い、管理アカウントを設定する。

# yum install openldap*
# vim /etc/openldap/slapd.conf
 ...
suffix          "o=ameba,c=jp"
rootdn          "cn=Manager,o=ameba,c=jp"
 ...
rootpw          pass # ←パスワード
 ...
# service ldap start

2.2 エントリ追加

ldif ファイルを作成し、エントリを記述、OpenLDAP に追加する。各属性値は、 付録C オブジェクトクラス一覧付録D 属性一覧 を参考にする。

# cat > entries.ldif
dn: o=ameba,c=jp
objectClass: organization
o: ameba

dn: ou=engineer,o=ameba,c=jp
objectClass: organizationalUnit
ou: engineer

dn: uid=kui,ou=engineer,o=ameba,c=jp
objectClass: person
objectClass: uidObject
cn: keiichiro
sn: ui
uid: kui
userPassword: passkui

dn: uid=hime,ou=engineer,o=ameba,c=jp
objectClass: person
objectClass: uidObject
cn: himeko
sn: takenaka
uid: hime
userPassword: passhime
# ldapadd  -x -h localhost -D "cn=Manager,o=ameba,c=jp" -W -f accounts.ldif
Enter LDAP Password: # ← sldap.conf で設定したパスワード
adding new entry "o=ameba,c=jp"

adding new entry "ou=engineer,o=ameba,c=jp"

adding new entry "uid=kui,ou=engineer,o=ameba,c=jp"

adding new entry "uid=hime,ou=engineer,o=ameba,c=jp"

2.3 エントリが追加されているか確認

# ldapsearch -x -h localhost -b "o=ameba,c=jp" -s sub "(uid=kui)"

...

dn: uid=kui,ou=engineer,o=ameba,c=jp
objectClass: person
objectClass: uidObject
cn: keiichiro
sn: ui
uid: kui
userPassword:: cGFzc2t1aQ==

...

3. Apache と OpenLDAP の連携

# yum install mod_authz_ldap
# vim /etc/httpd/conf/httpd.conf
 ...
<Directory "/var/www/html">
   ...
#    AllowOverride None # ← コメントアウト
    AllowOverride AuthConfig
   ...
</Directory>
 ...
# service httpd restart
# vim /var/www/html/private/.htaccess
AuthName "Please enter uid and userPassword"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative  off
AuthLDAPURL ldap://localhost/o=ameba,c=jp?uid
require valid-user

最後に

おまけ: private 以下ではなく、すべてに認証要求を出したいとき

private/.htaccess の設定を、httpd.conf<Directory "/var/www/html"> に記述する。

# vim /etc/httpd/conf/httpd.conf
 ...
<Directory "/var/www/html">
   ...
    AllowOverride None
    AuthName "Please enter uid and userPassword"
    AuthType Basic
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative  off
    AuthLDAPURL ldap://localhost/o=ameba,c=jp?uid
    require valid-user
   ...
</Directory>
 ...
# service httpd restart # ← 再起動大切!!

参考にしたサイト

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment