Für eine nahtlose und möglichst direkte Einbindung in einen beliebigen Druckshop aus externen Systemen bietet der Druckshop mit dem SSO-Modul die Möglichkeit, einen Benutzer direkt zu registrieren und anzumelden, ohne dass dieser eine eigene Registrierung vornehmen muss. Hierzu muss lediglich das Modul konfiguriert werden und eine Anbindung programmiert werden.
...
Pro Shop kann eine individuelle Konfiguration angelegt werden, wobei folgende Optionen zur Verfügung stehen:
Schnittstelle aktivieren | Die SSO-Schnittstelle kann für jeden Shop einzeln aktiviert und deaktiviert werden. |
Verschlüsselungspasswort | Ein möglichst sicheres Passwort, |
das zur Ver- und Entschlüsselung der übertragenen Informationen dient. | |
Kommunikationsstatus | |
Zahlungsart | Soll bei einem SSO-Login eine bestimmte Zahlungsart verwendet werden, kann diese hier hinterlegt werden. Wird keine Zahlungsart vorgegeben, stehen alle verfügbaren Zahlungsarten im Shop bereit. |
Anbindung aus einem externen System
Um den direkten Login per SSO zu ermöglichen, muss das externe System die erforderlichen Benutzerdaten verschlüsselt übergeben. Hierzu wird das symmetrische Verschlüsselungsverfahren AES-256-CBC verwendet, um eine zuverlässige Verschlüsselung sicherzustellen. Grundsätzlich können folgende Daten übergeben werden:
user | Alle verfügbaren Benutzerdaten können übergeben werden. Diese werden zur Erstellung und Aktualisierung der Benutzerdaten im Druckshop verwendet.
|
Es stehen alle weiteren Felder eines Kundenbenutzers zur Verfügung und werden im Druckshop aktualisiert, sofern sie übergeben werden. | |||
redirect_uri | Ziel-Adresse, auf die bei erfolgreichem Login weitergeleitet werden soll (i. d. R. ist dies die Startseite des Shops: "/"). | ||
callback_uri | Ziel-Adresse, auf die nach Bestellabschluss zurückgeleitet werden soll. | ||
logout_uri | Ziel-Adresse, auf die nach Logout zurückgeleitet werden soll. | ||
error_uri | Ziel-Adresse, auf die nach erfolglosem Login zurückgeleitet werden soll. |
Codeblock | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
$newShopCustomer = new Customer();
$newShopCustomer->userName = 'max.mustermann';
$newShopCustomer->password = 'supersecurepasswordforuser1234';
$newShopCustomer->status = 'OK';
$newShopCustomer->ssoLoginOnly = 1;
$ssoData = [
'user' => $newShopCustomer,
'redirect_uri' => '/',
'callback_uri' => 'https://my.sytem.dev/sso_callback.php',
'logout_uri' => 'https://my.system.dev/sso_logout.php',
'error_uri' => 'https://my.system.dev/sso_login_failed.php'
];
// Encrypt ssoData
$cipher = 'AES-256-CBC';
$ssoPassword = 'ssoPasswordFromModuleSettings'; // Hier muss das hinterlegte Passwort aus den Moduleinstellungen angegeben werden
if (in_array($cipher, openssl_get_cipher_methods())) {
$cipherInitializationVector = substr(
hash(
'sha256',
$ssoPassword
),
0,
openssl_cipher_iv_length($cipher)
);
$encodedDataString = openssl_encrypt(
http_build_query($ssoData),
$cipher,
$ssoPassword,
0,
$cipherInitializationVector
);
$ssoLoginUri = 'http://www.shop.printshop.local/sso/login?data=' . rawurlencode($encodedDataString);
} else {
exit('encoding not available.');
} |
Verifizierung eines Benutzerzugriffs
Um einen Benutzerzugriff durch ein externes System zu verifizieren, kann zusätzlich das Modul "SSO Verifizierung" aktiviert werden.
Ist das Modul aktiviert, steht innerhalb der Verwaltung im Bereich "Addons » SSO Verifizierung" die Konfiguration für jeden Shop zur Verfügung, in der eine Verifizierungs-URL hinterlegt werden kann. Diese wird mit den Parametern user
und user-id
aufgerufen. Als Rückgabe wird ein JSON-Objekt erwartet mit folgenden Eigenschaften:
{
"user-id":"", // Bei erfolgreicher Prüfung wird hier die Benutzer-Kennung zurückgegeben
"hook_url":"" // Optionale URL für den Rücksprung
}