認証にActiveDirectoryを使用する方法
KERBEROS認証もしくはLDAP認証を用いることで、WindowsのActiveDirectoryを利用したユーザ認証が行えます。
KERBEROS認証を用いる場合
準備するもの
- mod_auth_kerb
CentOS4等では、「yum -y install mod_auth_kerb」を実行することで導入できます。
前提
ActiveDirectoryドメイン | DOMAIN.EXAMPLE.COM | |
ActiveDirectoryサーバ | server.example.com | |
Apacheの認証レルム | Kerberos Login | 認証時のダイアログにも表示されます |
設定
欠点
KERBEROS認証の場合は、ActiveDirectory上の有効なユーザ全員が対象となり、ActiveDirectory上の特定OU内のユーザのみにすることは出来ないようです。特定ユーザのみにする場合は「Require user」か、ユーザを列挙したファイルを用意して「Require group」を使用することになります。(対象ユーザがActiveDirectory上で一元管理出来ない)
補足:この欠点は、サービスチケットをActiveDirectoryサーバに発行してもらっていないのが原因です。
リソースキットを参考にしてサービスチケットを発行してもらい設定を反映すれば決まったユーザだけ許可することができるようです。(未検証)
利点
Apache-ActiveDirectoryサーバ間はKERBEROSのプロトコルが使用されるので、パスワードがクリアテキストで流れません。
参考になるページ
LDAP認証を用いる場合
準備するもの
- mod_auth_ldap
通常はApacheと一緒に配布されています。
前提
ActiveDirectoryドメイン | DOMAIN.EXAMPLE.COM | |
ActiveDirectoryサーバ | server.example.com | |
LDAP接続に使うユーザDN | SEARCH@DOMAIN.example.com | ActiveDirectoryにLDAP接続用のユーザ「SEARCH」を用意します |
LDAP接続に使うパスワード | password | |
認証対象のグループのDN | CN=APACHE,DC=DOMAIN,DC=example,DC=com | ActiveDirectoryのトップに認証用グループ「APACHE」を作成します。 |
Apacheの認証レルム | LDAP Login | 認証時のダイアログにも表示されます |
※APACHEグループのメンバーだけが認証可能となります
設定
- 認証を掛けたいApacheのディレクティブ(.htaccess等)の設定
ディレクティブ(.htaccess等)に以下の設定を追加
AuthType Basic
AuthName "LDAP login"
AuthLDAPEnabled On
AuthLDAPBindDN SEARCH@DOMAIN.example.com
AuthLDAPBindPassword password
AuthLDAPUrl "ldap://server.example.com:389/dc=DOMAIN,dc=example,dc=com?\
sAMAccountName?sub?\
(?(objectClass=user)(memberOf=CN=Apache,dc=DOMAIN,dc=example,dc=com))"
Require valid-user
欠点
LDAPの場合は簡易認証となるため、apache-ActiveDirectoryサーバ間のパスワードがクリアテキストで流れてしまいます。
また、LDAPに接続するためのユーザ(認証対象と別のものでよい)とパスワードが必要になります。
利点
ActiveDirectoryのグループ単位で認証を掛けられるため、ActiveDirectory上での一元管理が可能となります。
コメント