database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
ㆍLDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
LDAP Q&A 2211 게시물 읽기
No. 2211
php로 AD의 정보를 가져올려고 하는데 안되네요..
작성자
chobo(junsic99)
작성일
2005-12-02 10:19ⓒ
2005-12-02 10:29ⓜ
조회수
8,233

ldap에 대해서는 거의 모르는 상태에서 작업을 할려니 좀 힘들군요.^^

우선 작업 환경이 윈도우2000 Active Directory에서 php로 LDAP 함수를 이용하여 그룹 정보와

사용자 정보를 가지고 오기만 하면 됩니다. 최종적으로는 exchang 서버에 php로 작성한 프로그램을

붙이는건데요, php에서 ldap_connect와 ldap_bind까지는 성공하는 걸로 나오는데,

실제 데이터를 어떻게 가져와야 할지 모르겠네요. 아마 ldap_search로 가져오는거 같은데,

들어가는 인자를 어떻게 넣어야 될지 몰라 계속 오류가 납니다(cn, c, ou, dc등).. 정말 감이 안잡히네요.

일단 윈2000의 active directory 트리 구조를 보면요...

active directory 사용자 및 컴퓨터[one.two.co.kr]
two.co.kr
└builtin
└computer
└domain controller
└ForeignSecurityPrincipals
└LostAndFound
└system
└users
three (개체 클래스 : Organizational Unit)
four (개체 클래스 : Organizational Unit)
five (개체 클래스 : Organizational Unit)

위와 같은 트리 구조로 되어있구요, 저는 four나 five 등에서 user의 정보를 가져오면

되는데요...쉽지가 않군요.(참고로 three와 four, five는 한글로 되어있구요...)

고수님들 도와주세요...

 

이 글에 대한 댓글이 총 1건 있습니다.

스터디에 가보시면

Understanding LDAP이라는 PPT파일이 있거든요.

거기서 Search부분을 보시면 이해가 가실겁니다.

 

예제)

<html>
<head>
<title>LDAP PHP Search 프로그램</title>
</head>
<body>
<?php
/*LDAP 서버에 연결한다.*/
$ds = ldap_connect("ldap.lovepetty.com", 389);

echo "<b>연결한 객체는 ".$ds."번째 객체이다.</b>";

if ($ds) {    
    echo "<h4>서버가 제대로 연결되었습니다.</h4>";
    /* LDAP 서버에 binding 한다. */
 $result=ldap_bind($ds, "ID", "패스워드");
   
 if( $result == TRUE) {
       echo "<h4>바인드가 성공적으로 이루어 졌습니다.</h4>";
 } else {
       echo "<h4>바인드가 실패했습니다.</h4>";
 }

 
    echo "uid=sjsong 객체를 검색합니다.";
 /*LDAP서버의 검색을 수행한다.*/
    $sr=ldap_search($ds,"o=rathontech.com", "uid=sjsong"); 
    echo "검색결과이다. ".$sr."<p>";

    /*검색하여 가지고 온 엔트리의 갯수를 샌다.*/
    echo "현재가지고 온 검색결과의 갯수:  ".ldap_count_entries($ds,$sr)."<p>";

    echo "검색된 엔트리를 가지고 온다.<p>";
    /*검색하여 가지고 엔트리를 변수에 넣는다..*/
    $info = ldap_get_entries($ds, $sr);

    echo "엔트리의 수는 ".$info["count"]."개 입니다.<p>"; 


    /*결과는 3차원 배열로 가지고 오며 이를 분리하여 자료를 뽑아 낼수 있다.
   이곳에서 한가지 중요한 점은 LDAP서버에 저장될 객체는 모두 UTF-8로
   저장되어 있다. 그래서 이를 그대로 화면에 출력하면 화면이 깨지게 된다.
   이 깨지는것을 방지하기 위하셔 화면에 뿌려줄때 글짜를 EUC-KR로 변환하여
   화면에 뿌려주는 iconv라는 함수를 사용하였다. 이 함수는 정말 필요한 함수
   다 꼭 잊지 말자*/
    for ($i=0; $i<$info["count"]; $i++) {
        echo "dn: ". $info[$i]["dn"] ." <br>";
        echo "cn: ". iconv("UTF-8","EUC-KR",$info[$i]["cn"][0]) ." <br>";
        echo "sn: ". iconv("UTF-8","EUC-KR",$info[$i]["sn"][0]) ." <br>";
  echo "uid: ". $info[$i]["uid"][0] ." <br>";
  echo "telephonenumber: ". $info[$i]["telephonenumber"][0] ."<br><br>";
    }
} else {
    echo "<h4>서버가 연결되지 않았습니다.</h4>";
}

//LDAP연결 해제
echo "서버연결 해제......";
$r = ldap_close($ds);
?>
</body>
</html>

송상준(sjsong)님이 2005-12-02 13:57에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
2220버클리 DB를 이용한 방화벽 로그 가공 문제 [1]
tykim
2006-01-04
6610
2218LDAPReferralException [1]
김민영
2006-01-02
6474
2212ldap로 진행한 프로젝트 요약 정보는 없나요?
....
2005-12-10
6594
2211php로 AD의 정보를 가져올려고 하는데 안되네요.. [1]
chobo
2005-12-02
8233
2209쓰기권한 있는 user 세팅에 대해..말해주세염.. [1]
김민영
2005-11-18
6848
2207ldapadd 사용시 에러 [2]
포유
2005-11-17
6901
2206Berkeley DB DB size 질문 [1]
김태용
2005-11-07
7525
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다