ユーザ用ツール

サイト用ツール


ubuntu-server-10-04:ldap_server

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
ubuntu-server-10-04:ldap_server [2011/05/22 12:03] – [参考] adminubuntu-server-10-04:ldap_server [2011/05/22 22:41] (現在) – [Apache2 で LDAP 認証] admin
行 289: 行 289:
 ブラウザでアクセスされるファイルは、 /usr/share/phpldapadmin/ に格納されている。 ブラウザでアクセスされるファイルは、 /usr/share/phpldapadmin/ に格納されている。
  
-設定ファイルを変更する。+<note>"There was a problem with the request." と出て動かなかったが cookie を無効にしていただけだった・・・。</note> 
 + 
 +設定ファイルを変更する。今回の要件は以下。 
 + 
 +  * OpenLDAP と phpLDAPadmin は同じサーバ 
 +  * dn: ou=people,dc=example,dc=com に属するユーザがログインする 
 +  * ユーザは uid と パスワードを指定してログインする 
 +  * ログインした後に ou=people,dc=example,dc=com 以下を閲覧できるが、変更は自身のパスワードのみ 
 +  * ou=people,dc=example,dc=com に所属するユーザは inetOrgPerson クラスにパスワードを記述 
 +  * anonymous 認証はさせない
  
 <code> <code>
行 295: 行 304:
 </code> </code>
  
-  +以下を変更。 
-<note>"There was a problem with the request." と出て動かなかったが cookie を無効にしていただっ・・・。</note>+ 
 + 
 +  * $config->custom->session['blowfish'] = '<RANDOM_STRING>'; 
 +    * クッキー暗号化用のランダム文字列を設定 
 +  * $servers->setValue('server','name','My LDAP Server'); 
 +    * サーバの表示名なのでわかりやすいものに変更 
 +  * $servers->setValue('server','host','127.0.0.1'); 
 +    * サーバのホスト名かIPを指定するが今回は変更なし 
 +  * $servers->setValue('server','base',array('ou=people,dc=example,dc=com')); 
 +    * ou=people,dc=example,dc=com 以下を閲覧するように設定 
 +  * #$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com'); 
 +    * dn ではなく uid 指定でログインするのでコメントアウト 
 +  * $servers->setValue('login','attr','uid'); 
 +    * uid でログインするように設定 
 +  * $servers->setValue('login','base',array('ou=people,dc=example,dc=com')); 
 +    * ログインで使用するツリーを設定 
 +  * $servers->setValue('login','class',array('inetOrgPerson')); 
 +    * 認証情報が格納されいるクラスを指定 
 +    * 指定しなくてもいたけど一応 
 +  * $servers->setValue('login','anon_bind',false); 
 +    * anonymous でのログインを無効 
 + 
 + 
 +==== アクセス権を変更 ==== 
 + 
 +phpLDAPadmin に uid でログイン可能にするには認証前にツリーを read できるようにしておかなければいけないらしい。ということで、特定IPらであれば認証前に read できるようにアクセス権を変更。 
 + 
 + 
 +  * cn=admin,dc=example,dc=com は全てに書き込み許可 
 +  * anonymous で認証はできる 
 +  * IPアドレスが 127.0.0.1 の端末からは認証前に read 可能  
 +  * 認証後にユーザは ou=people,dc=example,dc=com 以下閲覧可能 
 +  * ログイン後に自身のパスワードを変更可能 
 + 
 +以下の内容でファイルを作成。 
 + 
 +<file - change_access_control.ldif> 
 +dn: olcDatabase={1}hdb,cn=config 
 +changetype: modify 
 +replace: olcAccess 
 +olcAccess: to attrs=userPassword by dn.exact="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none 
 +olcAccess: to attrs=shadowLastChange by self write 
 +olcAccess: to dn.subtree="ou=people,dc=example,dc=com" by dn.regex="uid=([^,]+),ou=people,dc=example,dc=com$" read by peername.ip=127.0.0.1 read 
 +olcAccess: to * by dn.exact="cn=admin,dc=example,dc=com" write by * none 
 + 
 +</file> 
 + 
 +作成したファイルを設定する。 
 + 
 +<code> 
 +$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f change_access_control.ldif 
 +</code> 
 +<code> 
 +SASL/EXTERNAL authentication started 
 +SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth 
 +SASL SSF: 0 
 +modifying entry "olcDatabase={1}hdb,cn=config" 
 +</code> 
 + 
 +で完了。 
 + 
 + 
 +===== Apache2 で LDAP 認証 ===== 
 + 
 +構築した LDAP を使って Apache2 で認証してみる。 
 + 
 +まず Apache2 で LDAP 関連のモジュールを有効にする。 
 + 
 +<code> 
 +$ sudo a2enmod ldap authnz_ldap 
 +</code> 
 + 
 +<code> 
 +Enabling module ldap. 
 +Considering dependency ldap for authnz_ldap: 
 +Module ldap already enabled 
 +Enabling module authnz_ldap. 
 +Run '/etc/init.d/apache2 restart' to activate new configuration! 
 +</code> 
 + 
 +<note>逆に無効にするには\\ 
 +$ sudo a2dismod authnz_ldap ldap \\ 
 +authnz_ldap が ldap に依存していめ</note> 
 + 
 +Apache2 の再起動を促されるので、再起動する。 
 + 
 +<code> 
 +$ sudo /etc/init.d/apache2 restart 
 +</code> 
 + 
 +LDAP で認証したいディレクトリの Apache2 設定ファイルへ以下を追加。 
 + 
 +<code> 
 +<Location /foobar> 
 +    SSLRequireSSL 
 +    SSLOptions +StrictRequire 
 +    AuthType        Basic 
 +    AuthBasicProvider ldap 
 +    AuthName        "RedTiger Server" 
 +    AuthLDAPURL     "ldap://127.0.0.1:389/ou=people,dc=redtiger,dc=selfip,dc=com?uid" 
 +    AuthzLDAPAuthoritative off 
 + 
 +    require valid-user 
 +#    order deny,allow 
 +#    deny from all 
 +#    Satisfy Any 
 +</Location> 
 +</code> 
 + 
 +  * SSLRequireSSL 
 +    * SSLでの接続を強制 
 +  * SSLOptions +StrictRequire 
 +    * Satisfy Any よりも SSL 接続の優先度を高くし必ず SSL を使わせる 
 +  * AuthType        Basic 
 +    * 認証タイプ 
 +  * AuthBasicProvider ldap 
 +    * 認証に LDAP を使用 
 +  * AuthName        "RedTiger Server" 
 +    * ダイアログに表示されるのでわかりやすい名前をつる 
 +  * AuthLDAPURL     "ldap://127.0.0.1:389/ou=people,dc=example,dc=com?uid" 
 +    * LDAP 認証に使用する URI を指定 
 +  * AuthzLDAPAuthoritative off 
 +    * LDAP 以外の認証を使用できなくする 
 +  * require valid-user 
 +    * 認証済みのユーザのみアクセス可能 
 +  * #    order deny,allow 
 +    * #    deny from all 
 +    * 個別に IP による制限等が必要な場合はここに記述 
 +    * 必要ない場合は必ず order 部分からコメントアウト(しないと SSLOptions +StrictRequire が無効になる) 
 +  * Satisfy Any 
 +    * require か order を満せばアクセス可能 
 +    * 必要ない場合は必ずコメントアウト 
 + 
 +Apache2 を再起動する 
 + 
 +<code> 
 +$ sudo /etc/init.d/apache2 restart 
 +</code> 
 + 
 +で完了。 
 + 
 +ブラウザでアクセスして動作を確認する。 
 ===== DB操作コマンド ===== ===== DB操作コマンド =====
  
ubuntu-server-10-04/ldap_server.1306033381.txt.gz · 最終更新: 2011/05/22 12:03 by admin