Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

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 aktivierenDie SSO-Schnittstelle kann für jeden Shop einzeln aktiviert und deaktiviert werden.

Verschlüsselungspasswort

Ein möglichst sicheres Passwort, welches zur Ver- und Entschlüsselung der übertragenen Informationen dient.
Kommunikationsstatus
E-Mail
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.

userName *Benutzername des neuen oder existierenden Benutzers.
password *Passwort des neuen Benutzers (dieses wird vom Druckshop verschlüsselt).
customerNumberKundennummer
status

Status des Benutzers (

bspw.

beispielsweise "OK").

ssoLoginOnlyErlaubt dem Benutzer ausschließlich einen Login per SSO. Dieser Parameter kann dazu verwendet werden, um einen direkten Login über das Shop-System zu unterbinden. (1 oder 0)

Es stehen alle weiteren Felder eines Kundenbenutzers zur Verfügung und werden im Druckshop aktualisiert, sofern sie übergeben werden.

redirect_uriZiel-Adresse, auf die bei erfolgreichem Login weitergeleitet werden soll (i. d. R. ist dies die Startseite des Shops: "/").
callback_uriZiel-Adresse, auf die nach Bestellabschluss zurückgeleitet werden soll.
logout_uriZiel-Adresse, auf die nach Logout zurückgeleitet werden soll.
error_uriZiel-Adresse, auf die nach erfolglosem Login zurückgeleitet werden soll.


Codeblock
languagephp
titleBeispielhafte Implementierung über PHP
linenumberstrue
collapsetrue
$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.');
}

...