Die freie Groupwarelösung OPEN-XCHANGE (bzw. die kommerzielle Lösung OpenExchange) verwaltet die Sessions mit Hilfe eines speziellen Session Daemons. Der Daemon kann mit einem relativ einfachen Protokoll auch von anderen Applikationen angesprochen werden.
Mit Hilfe der hier vorgestellten PHP4 Klasse (OXSession.php) kann die Sessionverwaltung von PHP Applikationen und Open-Xchange (oder OpenExchange) miteinander verschmolzen werden. Auf diese Weise ist es möglich eine gemeinsame Session-ID für die PHP Applikation und die Groupware zu implementieren.
Mit Hilfe der gemeinsamen Session-ID kann sehr einfach eine Single-Sign-On Lösung für die einzelnen Applikationen eines Intranets implementiert werden.
require 'OXSession.php'; // Host and port of the sessiond from Open-Xchange $host = '127.0.0.1'; $port = '33333'; $OXd = new OXSessiond($host,$port); // Create a new new PHP and Open-Xchange session $OXs = $OXd->login($login,$pass,'192.168.2.13','ox.lw-systems.de'); // redirect to OX if successful if ($OXs) { header('Location: '.$OXs->weburi); } else { echo "Login failed."; }
require 'OXSession.php'; // Host and port of the sessiond from Open-Xchange $host = '127.0.0.1'; $port = '33333'; // aktuelle Session ID ermitteln $SID = session_id(); $OXd = new OXSessiond($host,$port); // fetch a OXSession object $OXs = $OXd->getSession($SID); // print login name and cleartext(!) password echo "Login: ".$OXs->login."<br>\n"; echo "Password: ".$OXs->password."<br>\n";
require 'OXSession.php'; // Host and port of the sessiond from Open-Xchange $host = '127.0.0.1'; $port = '33333'; $OXd = new OXSessiond($host,$port); $OXd->logout($_GET['SID'];