[2003] Via LDAP(S) met PHP wachtwoord wijzigen*

Pagina: 1
Acties:

  • GregoryBE
  • Registratie: April 2004
  • Laatst online: 25-11-2025
Hallo,

Hoe installeer ik (zonder gebruik te maken van een echt certificaat bedrijf) een certificaat aan voor LDAPS?

Ik zou gebruikers de kans willen geven om hun wachtwoord te wijzigen,

wanneer ik het volgende script gebruik op Windows 2003 IIS6 PHP 5.1.4 met LDAP support over https
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$conn = ldap_connect("192.168.2.1");


ldap_bind( $conn, "Administrator@gregorius.be", "wachtwoord");

//$userdata["mail"][0]="mailinLDAPveranderd";
$userdata["unicodepwd"] = "{MD5}".base64_encode(pack("H*",md5("tuintje")));//"tuintje";

$userdata["mail"] = "tuintje";
$dn = "CN=A01,OU=Studenten,DC=gregorius,DC=be";


$result = ldap_modify($conn, $dn, $userdata); //change state
echo $result;
ldap_close($conn);
?>

dan krijg ik de meelding
Warning: ldap_modify() [function.ldap-modify]: Modify: Server is unwilling to perform in C:\...line 14
Het mail adres is veranderd naar tuintje, maar het wachtwoord niet

Ik denk dat het probleem ligt bij de verbinding naar de server, daarmee dat ik een poging wil doen om LDAPS te gebruiken, hiervoor moet je volgens de MS site een certificaat aanvragen, als ik een poging doe om deze stappen te volgen geeft Certificate authority, failled trg (Q321051)

Iemand een idee wat er scheelt met mijn configuratie? en of LDAPS zou werken en hoe? :?

Al doorgelezen bronnen:
PHP ldap_mod_replace
PHP ldap_modify
User password changes with LDAP and PHP

It's just a matter of time...


  • sanfranjake
  • Registratie: April 2003
  • Niet online

sanfranjake

Computers can do that?

(overleden)
Topictitel ietsje aangepast :P
Over welke editie van 2003 praten we? En is dit wel een domaincontroller?

Mijn spoorwegfotografie
Somda - Voor en door treinenspotters


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

How To Change a Windows 2000 User's Password Through LDAP staat wat uitleg in het algemeen over hoe je dat kan doen - nu zou je eens kunenn proberen om het password te wijzigen met How to set a user's password with Ldifde om te zien of je echt een certificaat nodig hebt e.d. :)

  • GregoryBE
  • Registratie: April 2004
  • Laatst online: 25-11-2025
Hallo, het gaat wel degelijk over een domeincontroller, en hierop staat W2003 SP1

Na heeeeel lang zoeken heb ik eindelijk een oplossing gevonden. :) _/-\o_ ) Het probleem lag toch bij het certificaat.
  1. Volg deze procedure eerst (het is mogelijk dat niet alle popups verschijnen, was bij mij ook niet het geval). Door deze stappen te volgen is het nu mogelijk om via LDAPS verbinding te maken met de server.
  2. dan heb ik de onderstaande PHP code gebruikt.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
$conn = ldap_connect("ldaps://192.168.2.1/");
ldap_bind( $conn, "Administrator@gregorius.be", "wachtwoord");

ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3)
ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);


$new_passwd = "\""."kiek"."\"";
for ($i = 0; $i < (strlen($new_passwd)); $i++) {
$uni_passwd .= "{$new_passwd{$i}}\000";
};
$userdata["unicodePwd"] = $uni_passwd;

$userdata["mail"] = "tuintje";
$dn = "CN=A01,OU=Studenten,DC=gregorius,DC=be";


$result = ldap_modify($conn, $dn, $userdata); //change pass
echo $result;
ldap_close($conn);
?>


- Iets heel handig om te kijken of je LDAPS (poort 636) verbinding werkt is LDP.exe (dat staat op W2003 CD, Support,Tools)


Bronnen:
Devshed
+ bronnen hierboven gegeven

Bedankt elevator :P .

It's just a matter of time...


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

ipv hoe je nu je string naar unicode 'omzet' - kan je niet beter een van PHP's eigen unicode functies gebruiken bv. de mb_* reeks van functies e.d.? :)

  • GregoryBE
  • Registratie: April 2004
  • Laatst online: 25-11-2025
Was er even naar op zoek,

In het forum waar ik de oplossing op mijn probleem vond, gaven ze deze code
PHP:
1
$encoded = mb_convert_encoding($password, 'UTF-8', 'ASCII');

http://be.php.net/manual/nl/function.mb-convert-encoding.php

Maar na testen blijkt dit gwn de input als output trg te geven

En als je bij PHP zoekt naar Unicode, staat er
      This extension is still in development and it isn't available to public yet. :+
(bron)
Volgens mij gaat dit niet met een functie, hopelijk binnenkort, is idd wat lang :)

It's just a matter of time...


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

http://nl3.php.net/utf8_encode zou je anders nog kunnen pakken maar eigenlijk is dit te offtopic voor WSS :$

  • GregoryBE
  • Registratie: April 2004
  • Laatst online: 25-11-2025
Om er nog even op terug te komen, is het mogelijk dat UTF8_encode() ook niet werkt?
deze code:
PHP:
1
2
3
4
5
6
7
8
9
$new_passwd = "\""."testje"."\"";
for ($i = 0; $i < (strlen($new_passwd)); $i++) {
$uni_passwd .= "{$new_passwd{$i}}\000";
};

$string2 = utf8_encode($new_passwd);  

echo $uni_passwd;
echo "<p>".$string2

geeft verwerkt:
http://gretech1.be/testing/test1.php

It's just a matter of time...


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Probeer eens mb_convert_ecoding($new_passwd, 'UTF-16'); ? :)

  • GregoryBE
  • Registratie: April 2004
  • Laatst online: 25-11-2025
ik heb regel 6 van test1.php aangepast naar
PHP:
1
$string2 = mb_convert_encoding($new_passwd, 'UTF-16');

Resultaat= hetzelfde, raar 8)7

It's just a matter of time...


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

PHP:
1
$new_passwd = 'test'; echo bin2hex(mb_convert_encoding($new_passwd, 'UTF-16'));

levert bij mij toch netjes 0074006500730074 op hoor? :)

  • GregoryBE
  • Registratie: April 2004
  • Laatst online: 25-11-2025
Ja idd!, sorry |:(
de 2 verschillende formaten,

220074006500730074006a0065002200 (lange methode)

00220074006500730074006a00650022 (bin2hex(mb_convert_encoding($new_passwd, 'UTF-16')); methode)
maakt dit iets uit, dat bij 1 de 2 nullen erachter staan en bij de tweede ervoor ?
(Meermaals bedankt :) )

It's just a matter of time...


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Geen idee - het lijkt me dat mb_convert_encoding het juist doet :P

  • DexterDee
  • Registratie: November 2004
  • Laatst online: 16-02 21:20

DexterDee

I doubt, therefore I might be

Puur ter informatie en "for the record", maar ik heb recentelijk LDAPS aan de praat moeten krijgen op een windows 2003 server. Een van de minder triviale dingetjes die handig is om te weten is dat het hier ging werken door de extensie openSSL in PHP te activeren. Niet geheel ontoevallig uiteraard, maar ook niet duidelijk gedocumenteerd B)

Scheelt mensen weer wat zoekwerk als ze dit topic tegenkomen :)

Klik hier om mij een DM te sturen • 3245 WP op ZW

Pagina: 1