タグ:LDAP

PHPでLDAPに接続する

LDAPサーバがようやくできたので、PHPで接続してみました。

以下プログラム例です。

※「設定」の部分はLDAPサーバの設定に合わせる必要があります。

<?php

//設定
$ldap_host = "localhost"; //LDAPサーバのホスト
$ldap_port = 389; //ポート
$ldap_dc = "dc=ldap-server,dc=com";
$ldap_cn = "Dari"; //cn
$ldap_ou = "Unit"; //ou
$ldap_pass = "password"; // パスワード

//接続開始
$ldap_DN = "cn=".$ldap_cn.",ou=".$ldap_ou.",".$ldap_dc;
$ldap_conn = ldap_connect($ldap_host, $ldap_port);

if($ldap_conn){
    echo "<p>接続成功</p>";

    $ldap_bind  = @ldap_bind($ldap_conn, $ldap_DN,$ldap_pass);
   
    if($ldap_bind){
        echo "<p>バインド成功</p>";
       
        $ldap_search = ldap_search($ldap_conn, $ldap_DN,"cn=*");
        $get_entries = ldap_get_entries($ldap_conn,$ldap_search);
       
        //エントリ情報出力
        print_r($get_entries);   
    }else{
        echo "<p>バインド失敗</p>";
    }
    ldap_close($ldap_conn);
}else{
    echo "<p>接続失敗</p>";
}

?>

※上記のプログラムを実行するには、PHPを実行させるサーバに「php-ldap」モジュールが入っていること、そしてLDAPサーバがあることが前提です。

うまくバインドできればエントリ情報が出力されるかと思います。

バインドできたかどうかの判断をさせれば、ユーザ認証にも使用できますね。

Fedora11でLDAPサーバ構築

以下は超Linux初心者のメモ書き的なものです。

テスト用にLDAPサーバを構築するため、事務所のLINUXサーバを取り出してきて、Fedora13をインストールしたのが先週。

しかしOpenLDAPをインストールしようとしてもうまくいかない。というのも、どうやってもなぜか「slapd.conf」が見当たらないんです。

こちらのサイトに「openldap-servers」がないからでは?という回答を見つけたので「rpm -qa | grep openldap」を実行してみるもちゃんとインストールされてある。

困ったなぁ、なんて悩んでいると、同僚が一言。

「Fedoraのバージョン下げたら?」

うむ、確かにFedora11では正常にOpenLDAPが動作している様子(Server Worldさんサイト参考

さっそくYamagata Univのサイトからバージョン11をダウンロードします。

今回はCDにして6枚組。多いなぁ・・・

ダウンロード→CDに焼く→インストール→初期設定方法についてはFedora13の時とほぼ同じです。

続いてServer WorldさんのサイトFedoraで自宅サーバ構築さんのサイトを参考にOpenLDAPのインストールと設定を行います。

LDIFファイルの作成と登録方法についてはこちらのサイトを参考にさせてもらいました。参考サイト:UNIX Lifeさんのサイト

ウェブサーバと別にする場合は、

# /usr/bin/system-config-firewall

でファイヤーウォールを立ち上げて、ポート389を開放してください。

これでLDAPサーバの完成です。

はっきり言って、Linuxサーバ構築も初心者だしLDAPについてもそもそもLDAPって何?から始めましたがやっているうちになんとなく分かってくるものですね~。

ついでに

PHPからLDAPに接続する場合はphp-ldapモジュールが入っていないと使用できません。(phpinfoを見るか「# rpm -qa | grep openldap」を実行するとわかります。)

入っていない場合は「#yum -y install php-ldap」を実行しましょう。

 

■追記

よく使用するコマンド

SLAPD データベースからの LDIF の生成する

/usr/sbin/slapcat

ldifファイルよりエントリを登録(以下例:taro.ldifファイルから登録する場合)

ldapadd -f taro.ldif -x -D "cn=Manager,dc=localhost,dc=com" -W

エントリを削除(以下例:cn=taro,ou=Unit,dc=localhost,dc=comでバインドしているエントリを削除する場合)

ldapdelete -x -D "cn=Manager,dc=localhost,dc=com" -W "cn=taro,ou=Unit,dc=localhost,dc=com"

 

スキーマについての参考サイト

 

エラーについての参考サイト

Fatal error: Call to undefined function ldap_connect()

Fedora11にて、OpenLDAPをインストールし、設定を終えPHPからLDAPにアクセスしようとしたら、こんなエラーを吐き出しました。

Fatal error: Call to undefined function ldap_connect()

どうやら「php-ldap」が入っていないのが原因なようなので

# yum -y install php-ldap

で「php-ldap」をインストールし、Apacheを再起動。

無事解決しました。

Copyright(c) 2010 - 2017 ダリの雑記