PHP에서 Root 권한 계정으로 AD(Active Directory) 비밀번호 변경시
AD의 이전 비밀번호 재사용 금지 정책 적용
<?php function getPassword($sPassword) { $sPassword = '"' . $sPassword . '"'; $nCount = strlen($sPassword); $sNewPassword = ""; for ($i = 0; $i < $nCount; $i++) { $sNewPassword .= $sPassword[$i] . "\000"; } return $sNewPassword; } $ctrl2012 = array( // LDAP_SERVER_POLICY_HINTS_OID for Windows 2012 and above "oid" => "1.2.840.113556.1.4.2239", "value" => sprintf("%c%c%c%c%c", 48, 3, 2, 1, 1) ); $ctrl2008 = array( // LDAP_SERVER_POLICY_HINTS_DEPRECATED_OID for Windows 2008 R2 SP1 and above "oid" => "1.2.840.113556.1.4.2066", "value" => sprintf("%c%c%c%c%c", 48, 3, 2, 1, 1) ); /****** ** 윈도우 2012이상의 경우 $ctrl2012 사용 ** 윈도우 2008의 경우 $ctrl2008 사용 *******/ if (!ldap_set_option($ldap_connection, LDAP_OPT_SERVER_CONTROLS, array($ctrl2008))) { echo "ERROR: Failed to set server controls"; } $userdata["unicodePwd"] = getPassword('newPassword'); $result = ldap_mod_replace($ldap_connection, $dn , $userdata); if (!$result) { echo "\nErrorNo : ".@ldap_errno($ldap_connection); echo "\nErrorMsg : ".@ldap_error($ldap_connection); }else{ echo 'OK'; } ?>
참고 해외 블로그 : http://laviefrugale.blogspot.kr/2013/01/enforcing-active-directory-password.html
MS 참고 자료 : https://msdn.microsoft.com/en-us/library/cc223320.aspx