본문 바로가기
기술자료 (KB)/Active Directory (AD)

AD 인증을 PHP로 가능한가요?

by 이완주 2021. 1. 14.

[문의사항]

사내 웹 응용프로그램을 사용하여 AD에 직접 인증이 가능한가요?

 

[문의답변]

네 가능합니다.

AD 는 LDAP(인터넷 산업 표준 프로토콜)을 사용하고 있습니다.

LDAP OPEN 소스가 많이 있어 검색을 하면 많은 예제를 찾을 수 있습니다.

 

아래는 PHP로 되어 있는 소스 입니다.

아래 소스 내용에서 globalsoft.co.kr 도메인 명만 본인의 회사 도메인 명으로 변경하시면 됩니다.

 

<?php
if(isset($_POST['username']) && isset($_POST['password'])){
    $adServer = "ldap://gsoft.local";
    $ldap=ldap_connect($adServer);
    $username=$_POST['username'];
    $password=$_POST['password'];
    $ldaprdn='gsoft'."\\".$username;

    ldap_set_option($ldap,LDAP_OPT_PROTOCOL_VERSION,3);
    ldap_set_option($ldap,LDAP_OPT_REFERRALS,0);
    $bind=@ldap_bind($ldap,$ldaprdn,$password);

    if($bind){
        echo "You are accessing</br>";
        $filter="(sAMAccountName=$username)";
        $result=ldap_search($ldap,"dc=gsoft,dc=local",$filter);
        $info=ldap_get_entries($ldap,$result);
        echo $info[0]["displayname"][0]."(".$info[0]["samaccountname"][0].")\n";
        @ldap_close($ldap);

    }else{
            $msg="Invalid emailaddress/password";
            echo $msg;
    }
}else{
?>
<form action="#" method="POST">
    <label for="username">Username: </label><input id="username" type="text" name="username" />
    <label for="password">Password: </label><input id="password" type="password" name="password" />
    <input type="submit" name="submit" value="Submit" />
</form>
<?php }?>
 

결과 화면

인증 요구 화면

 

AD 값을 이용하여 인증 완료 화면

 

댓글