Changes

PHP Extensions

1,300 bytes added, 18:44, 27 April 2014
/* PHP Assertion Control */
Several extensions to the existing PHP LDAP API have been developed to make it more suitable to our needs.
== PHP LDAP Assertion Control ==
To be able to safely change values, the Assertion Control is needed which results in a Compare-and-Set functionality.
* set the new value with the assert that the value must match the previously fetched one
* if it succeeds you can safely use the previously set value, if not: repeat the procedure
 
== LDAP Session Control ==
 
The implementation of the assertion is complete, but controls must be added to more PHP LDAP functions to make it useful.
 
The idea of this control is the possibility of tracking the queries made in the LDAP for a given session in the application:
 
<source lang='php'>
$link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version);
 
$entry = array(
"objectClass" => array(
"top",
"dcObject",
"organization"),
"dc" => "my-domain",
"o" => "my-domain",
"description" => "Domain description",
);
 
$control = ldap_control_session_tracking($link, "127.0.0.1", "localhost", LDAP_CONTROL_X_SESSION_TRACKING_USERNAME, "testuser");
 
ldap_modify($link, "dc=my-domain,dc=com", $entry, $control)
</source>
 
which results in the following log of the ldap (using <code>loglevel stats</code>):
 
<pre>
Apr 25 14:59:32 testmachine slapd[4208]: conn=1014 op=5 [IP=127.0.0.1 NAME=localhost USERNAME=testuser] MOD dn="dc=my-domain,dc=com"
Apr 25 14:59:32 testmachine slapd[4208]: conn=1014 op=5 [IP=127.0.0.1 NAME=localhost USERNAME=testuser] MOD attr=objectClass dc o description
Apr 25 14:59:32 testmachine slapd[4208]: conn=1014 op=5 [IP=127.0.0.1 NAME=localhost USERNAME=testuser] RESULT tag=103 err=0 text=
</pre>
[[Category:Documentation]]
[[Category:PHP]]
[[Category:LDAP]]
Bureaucrat, administrator
425
edits