Mit Single-Sign-On (oder kurz SSO) kann der Zugriff auf die PRINT LOUNGE aus externen Systemen vereinfacht werden. Dabei klickt der Benutzer lediglich auf einen Link in der Software (z.B. CMS- oder CRM-System, Intranet oder Beschaffungsplattform) und wird automatisch und sicher in der PRINT LOUNGE registriert und angemeldet. Über diesen SSO-Link werden die relevanten Benutzerdaten verschlüsselt übertragen.
Eine separate Registrierung oder ein erneutes Login in der PRINT LOUNGE entfällt somit, was die Integration und Nutzung der Software in externe Systeme und bestehende Softwarelandschaften vereinfacht.
So können eine schnellere Integration und einfachere Anmeldung, höhere Produktivität, Effizienz und Sicherheit sowie die Zentralisierung von Prozessen erreicht werden.
Inhalt dieser Dokumentation
16falsediscInhalt dieser DokumentationlistfalseVoraussetzungen
Das Add-On „Single-Sign-On (SSO)“ muss für den jeweiligen Mandanten aktiviert werden
Die SSO-Schnittstelle muss im Shop konfiguriert werden
Eine technische Anpassung im externen System kann für die Anbindung via SSO erforderlich sein, um den SSO-Link zu erstellen und einzubinden.
Informationen zum SSO-Link
Der Link zum Aufruf der PRINT LOUNGE enthält alle relevanten Daten in verschlüsselter Form, außerdem kann die Gültigkeit des Links auf eine festgelegte Dauer, IP-Adressen oder Referrer eingeschränkt werden.
Der Aufbau des SSO-Links ist immer identisch:
https://SHOP_DOMAIN/sso.php?h=ENCODED_KEY_VALUE_PAIRS
Die SHOP_DOMAIN besteht abhängig von der Shop-Konfiguration entweder aus dem hinterlegten Namen des Shops gefolgt von der SASS-Domain (bspw. shop.print-server.net, wobei „shop“ der Name des Shops ist) oder der individuellen Shop-Domain (bspw. example-shop-domain.dev).
noteDiese Einstellungen befinden sich in der Administration unter „Verwaltung » Shops » bearbeiten“ im Tab „Grundeinstellungen“.
Diese Einstellungen befinden sich in der Administration unter „Verwaltung » Shops » bearbeiten“ im Tab „Grundeinstellungen“.
Konfiguration der Schnittstelle
Bevor die SSO-Schnittstelle genutzt werden kann, muss diese zunächst innerhalb der Administration unter Verwaltung » Shops » bearbeiten im Tab „SSO-Schnittstelle“ konfiguriert und aktiviert werden.
Folgende Konfigurationsmöglichkeiten stehen hierbei zur Verfügung:
Einstellung | Mögliche Werte | Beschreibung |
|---|---|---|
SSO-Schnittstelle aktivieren | ja / nein | Aktiviert bzw. deaktiviert die generelle Verwendungsmöglichkeit der SSO-Schnittstelle. |
Reguläre Anmeldung deaktivieren | ja / nein | Deaktiviert die reguläre Anmeldung über das Login-Formular bei aktivierter SSO-Schnittstelle. Somit ist ausschließlich eine Nutzung über SSO möglich. |
Benutzerabmeldung ermöglichen | ja / nein | Deaktiviert die selbständige Abmeldung durch den Benutzer über den Shop. |
Zurück Button mit HOOK_URL anzeigen | ja / nein | Zeigt einen „zurück“-Button mit der übergebenen |
Unbekannte Benutzer registrieren | ja / nein | Erlaubt die Registrierung von nicht bekannten Benutzern. Die Aktivierung dieser Einstellung wird nicht empfohlen, kann aber in einigen Softwareumgebungen erforderlich und sinnvoll sein. Es sollte sichergestellt sein, dass alle Benutzer mit Zugang zum SSO-Link die PRINT LOUNGE nutzen dürfen. Ist diese Option deaktiviert, können sich nur bereits in der PRINT LOUNGE angelegte Benutzer über SSO anmelden. |
Benutzergruppen automatisch anlegen | ja / nein | Übergebene, aber noch nicht in der PRINT LOUNGE angelegte Benutzergruppen werden beim SSO-Login automatisch neu angelegt. Ist dies deaktiviert, wird die übergebene und bereits vorhandene Gruppe oder die Standard-Benutzergruppe verwendet. |
Benutzergruppen anhand Kundennummer ermitteln | ja / nein | Die passende Benutzergruppe wird anhand der übergebenen Kundennummer ermittelt. Wird keine Benutzergruppe gefunden, wird die Standard-Benutzergruppe verwendet. |
Benutzer intern folgender Standard-Budgetgruppe zuordnen | Auswahl der Benutzergruppe | Benutzergruppe, der SSO-Benutzer automatisch zugewiesen werden. |
Benutzerfelder nicht überschreibbar | Auswahl der Benutzerfelder | Ausgewählte Benutzerfelder werden geschützt und können nicht per SSO gesetzt werden. Übergebene Parameter für diese Benutzerfelder werden bei der Verarbeitung ignoriert. |
Passphrase | – | Vom System erzeugte Passphrase; kann nicht individuell gesetzt werden. |
Verschlüsselungsverfahren | Auswahl des Verfahrens | Auswahl des zu verwendenden Verfahrens zur Ver- und Entschlüsselung der übergebenen Daten. |
IP-Filter (optional) | semikolon-getrennte IP-Adressen | Semikolon-getrennte IP-Adressen, über die eine SSO-Nutzung ermöglicht werden soll. |
Referrer-Prüfung (optional) | Regulärer Ausdruck | Regulärer Ausdruck für Prüfung des übergebenen Referrers. Entspricht der Referrer nicht diesem Schema, schlägt der SSO-Login fehl. |
Benutzer ohne Benutzernamen mit temporärem Benutzernamen anmelden | ja / nein | Aktiviert bzw. deaktiviert die Nutzung der SSO-Schnittstelle ohne Benutzernamen. |
Request-Time-Out | Zeit in Millisekunden | Gültigkeitsdauer des Links. Übergabe des Parameters Wird der Wert “0” hinterlegt, ist der Link maximal 3 Tagen gültig. |
Fehler-/Hinweistexte | Freitext | Dieser Text wird im jeweiligen Fehlerfall angezeigt. Es können folgende Fehlertexte hinterlegt werden:
|
Informationen zur Referrer-Prüfung
In der Konfiguration für die Referrer-Prüfung kann ein Regulärer Ausdruck (RegExp) hinterlegt werden. Mithilfe dieses Ausdrucks kann bei der Registrierung und Anmeldung eines Benutzers über die SSO-Schnittstelle eine oder mehrere Domains überprüft werden, so dass eine Nutzung nur über bestimmte Domains zugelassen wird.
Beispiel, um ausschließlich www.example.org zuzulassen:
/www\.example\.org/
Beispiel, um www.example.org und www.printlounge.dev zuzulassen:
/www\.(example\.org|printlounge\.dev)/
Beispiel um *.example.org zulassen:
/(.*)\.example|\.org/
Anmeldung von Benutzern mit temporären Benutzernamen
Ist die Option “Benutzer ohne Benutzernamen mit temporärem Benutzernamen anmelden” aktiviert, muss auch die Option “Unbekannte Benutzer registrieren“ aktiviert werden. Sind beide Einstellungen gesetzt und wird zusätzlich kein ENCODED_KEY_VALUE_PAIRS übergeben, wird ein temporärer Benutzer mit einem Dummy-Benutzernamen angelegt.
(Technische) Datenübergabe & Erstellung des SSO-Links
Die relevanten Daten für die Benutzeranlage bzw. den Login (ENCODED_KEY_VALUE_PAIRS) müssen mit der hinterlegten PASSPHRASE und Verschlüsselungsart übergeben werden. Der Benutzer wird im Erfolgsfall in der PRINT LOUNGE angemeldet und kann diese im Anschluss regulär verwenden.
Codebeispiel zur Erzeugung des SSO-Links in PHP:
php (new DateTimeImmutable)->format(DateTime::ISO8601), 'customer_user_name' => 'example_user', 'customer_firstname' => 'printy', 'customer_lastname' => 'tester', ]; passphrase = 'SECRET_RANDOM_PASSPHRASE'; $cipher = 'aes-128-gcm'; $initializationVectorLength = openssl_cipher_iv_length($cipher); $initializationVecotr = openssl_random_pseudo_bytes($initializationVectorLength); $encryptedShopUserData = openssl_encrypt(http_build_query($shopUserData), $cipher, $passphrase, 0, $iv); $ssoLoginLink = 'https://shop.print-server.net/sso.php?h=' . urlencode($encryptedShopUserData);]]>Verfügbare SSO-Parameter
Parametername | Typ / Wert | Beschreibung |
|---|---|---|
continue_shopping | integer Verfügbare Werte 0: deaktiviert | Zeigt im Warenkorb den Button „Weiter einkaufen“. noteWenn aktiviert wird der Wenn aktiviert wird der |
customer_firstname | string max 50 Zeichen (UTF-8) | Shop-Benutzer » Vorname |
customer_funktion | string max. 200 Zeichen (UTF-8) | Shop-Benutzer » Funktion |
customer_lastname | string max 50 Zeichen (UTF-8) | Shop-Benutzer » Nachname |
customer_longname | string max 50 Zeichen (UTF-8) | Shop-Benutzer » Name / Ansprechpartner |
customer_user_aussendienst | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Außendienst |
customer_user_budgetgruppe__id | integer | Shop-Benutzer » Benutzergruppe (ID) noteWird keine Benutzergruppe übergeben, wird der Benutzer in einer definierten Standard-Benutzergruppe angelegt. Gleiches gilt, wenn anhand der ID keine gültige Benutzergruppe ermittelt werden kann. Wird keine Benutzergruppe übergeben, wird der Benutzer in einer definierten Standard-Benutzergruppe angelegt. Gleiches gilt, wenn anhand der ID keine gültige Benutzergruppe ermittelt werden kann. |
customer_user_businessunit | string max 50 Zeichen (UTF-8) | Shop-Benutzer » Abteilung |
customer_user_company1 | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Firma 1 |
customer_user_company2 | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Firma 2 |
customer_user_company3 | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Firma 3 |
customer_user_costcenter | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Kostenstelle |
| string max 200 Zeichen (UTF-8) |
veraltet, bitte |
customer_user_countrycode | string | Shop-Benutzer » Land noteLändercode gemäß ISO-3166 Ländercode gemäß ISO-3166 |
customer_user_email | string max 100 Zeichen (UTF-8) | Shop-Benutzer » E-Mail-Adresse |
customer_user_internet | string max 100 Zeichen (UTF-8) | Shop-Benutzer » Internet |
customer_user_kundennummer | string max 100 Zeichen (UTF-8) | Shop-Benutzer » Kundennummer |
customer_user_level | integer Verfügbare Werte: 57: A – Benutzer (Standard) | Shop-Benutzer » Benutzerrolle |
customer_user_mobil | string max 50 Zeichen (UTF-8) | Shop-Benutzer » Mobilnummer |
customer_user_name * | string max 50 Zeichen (A-Z0-9_-.@) | Shop-Benutzer » Benutzername Es müssen eindeutige Zuordnungen wie User-IDs, E-Mail-Adressen oder Benutzernamen verwendet werden. |
customer_user_purchaser | string max 50 Zeichen (UTF-8) | Shop-Benutzer » Käufer |
customer_user_street | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Straße |
customer_user_telefax | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Faxnummer |
customer_user_telefon | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Telefonnummer |
customer_user_town | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Stadt |
customer_user_zip | string max 10 Zeichen (UTF-8) | Shop-Benutzer » PLZ |
customfield1 | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Freifeld 1 |
customfield2 | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Freifeld 2 |
customfield3 | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Freifeld 3 |
customfield4 | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Freifeld 4 |
customfield5 | string max 200 Zeichen (UTF-8) | Shop-Benutzer » Freifeld 5 |
delivery_address_editable | integer Verfügbare Werte: 0: Ja | Legt fest, ob die Lieferadresse im Warenkorb editierbar ist. |
dest_id | integer | Die ID des Eintrags (Warengruppe oder Artikel) |
dest_page | string Verfügbare Werte: wg: Warengruppenseite | Zielseite nach SSO-Login |
dynamic_lists | Listeneinträge über die SSO-Schnittstelle als JSON-String übergeben. (Mehr dazu erfahren Sie unter dem Punkt „Dynamische Listeneinträge“) | |
email_address_for_cost_release | string | E-Mail-Adresse für Kostenfreigabe ab Version 6.0.0 verfügbar |
external_order_number | string | Externe Bestellnummer Über diesen Parameter kann eine Bestellnummer aus einem externen System übergeben werden, welche dann beim Auslösen einer Bestellung innerhalb der PRINT LOUNGE in der neuen Bestellung als „Externe Bestellnummer“ hinterlegt wird. |
freigabeportal_zeigen | integer Verfügbare Werte: 53: Ja | Shop-Benutzer » Freigabeportal anzeigen |
group_customer_number | string | Benutzergruppe » Kundennummer noteWird der Name der Benutzergruppe übergeben, wird geprüft ob in der Gruppe die Kundennummer mit exakt diesem Wert existiert. Falls nicht wird der Benutzer der Standardgruppe zugeordnet. Bei einer Übereinstimmung wird der Benutzer in die jeweilige Gruppe zugewiesen. Wird der Name der Benutzergruppe übergeben, wird geprüft ob in der Gruppe die Kundennummer mit exakt diesem Wert existiert. Falls nicht wird der Benutzer der Standardgruppe zugeordnet. Bei einer Übereinstimmung wird der Benutzer in die jeweilige Gruppe zugewiesen. Funktioniert nur wenn die Option „Benutzergruppen anhand Kundennummer ermitteln“ aktiviert wurde. Diese Daten werden nur zur Ermittlung der Benutzergruppe verwendet. |
group_name | string max 50 Zeichen (UTF-8) | Benutzergruppe » Bezeichnung noteWird der Name der Benutzergruppe übergeben, wird geprüft ob die Gruppe mit exakt diesem Namen existiert. Falls nicht wird die Gruppe neu angelegt. Der Benutzer wird dieser Gruppe zugewiesen. Wird der Name der Benutzergruppe übergeben, wird geprüft ob die Gruppe mit exakt diesem Namen existiert. Falls nicht wird die Gruppe neu angelegt. Der Benutzer wird dieser Gruppe zugewiesen. Funktioniert nur wenn die Option „Benutzergruppen automatisch anlegen“ aktiviert wurde. |
lang |
| Sprache |
pers_data | Dient der Übermittlung von Personalisierungsdaten (siehe unten) | |
quantity | integer | Die Anzahl aus der Preisstaffel noteWird keine Anzahl übermittelt, ermittelt das System die kleinste Preisstaffel für den jeweiligen Artikel. Wird keine Anzahl übermittelt, ermittelt das System die kleinste Preisstaffel für den jeweiligen Artikel. |
request_time * | Datum und Uhrzeit (ISO 8601) | Zeitpunkt des Aufrufs Standardgültigkeit des Requests 500s - 8 min |
return_url | 200 Zeichen | URL für Rücksprung-Link Wird hier eine URL angegeben, so wird auf der Finish ein Button angezeigt, der zu dieser URL führt |
settings | Array | Benutzereinstellungen Dieses Array kann alle Benutzer-Settings als key-value-Paar enthalten, welche gesetzt werden sollen. |
skip_cart | 53: Ja | Shop-Benutzer » Warenkorb überspringen |
| string de: Deutsch (Standard) |
veraltet, bitte |
test | Testmodus aktivieren noteZum Aktivieren des Testmodus kann der Parameter „test=true“ übergeben werden. Anstelle der Weiterleitung findet eine Bildschirmausgabe der übergebenen Daten statt. Zum Aktivieren des Testmodus kann der Parameter „test=true“ übergeben werden. Anstelle der Weiterleitung findet eine Bildschirmausgabe der übergebenen Daten statt. | |
user_groups_binary_description | 50 Zeichen (Utf8) | Beschreibung für Logo (Bild) einer Benutzergruppe |
user_groups_binary_url | 200 Zeichen (Utf8) | URL für Logo (Bild) einer Benutzergruppe |
view_settings | Array Folgende Keys sind verfügbar:
Mögliche Werte für alle Keys: 1: aktivieren / anzeigen | note OCI muss aktiviert sein und die Einstellung „Verwendung in iFrame?“ muss deaktiviert sein. Nur kompatibel mit dem Premiumtemplate. OCI muss aktiviert sein und die Einstellung „Verwendung in iFrame?“ muss deaktiviert sein. Nur kompatibel mit dem Premiumtemplate. |
* Pflichtangabe
Nach erfolgreicher Anmeldung über die SSO-Schnittstelle stehen alle Funktionen wie bei einer regulären Anmeldung über das Login-Formular zur Verfügung. Zusätzlich kann optional die reguläre Anmeldung mit Benutzernamen und Kennwort deaktiviert werden, sodass Benutzer nur noch über die SSO-Schnittstelle in der PRINT LOUNGE anmelden können.
Übergabe von dynamischen Listeneinträgen
Über den SSO-Parameter dynamic_lists können dynamische Listeneinträge an die Schnittstelle übergeben werden. Diese können dann innerhalb der Personalisierung vom Benutzer verwendet werden.
Die dynamischen Listeneinträge werden im JSON-Format übergeben.
Die Verwendung der per SSO übertragenen dynamischen Listeneinträge muss zunächst in der Feldspezialoption (FSO) „Liste“ der jeweiligen Textfelder in den Druckvorlagen aktiviert werden.
Beispiel für die Übergabe von dynamischen Listen für die Textfelder „Unternehmen“ und „Abteilung“:
jsonVerfügbare Benutzereinstellungen
Key der Benutzereinstellung | Zulässige Werte | Beschreibung | |
|---|---|---|---|
shopChangeableUserGroupPreset | ID eines Presets | Auswahl der Benutzergruppenwechsel | |
keylineCustomerId | ID aus Keyline | Keyline Customer ID | |
deactivate_csv_download_in_addressbook | 0 | Nein | CSV-Download im Adressbuch deaktivieren? |
1 | Ja | ||
showCostCenterSearch | 0 | Nein | Suchfeld “Kostenstelle” anzeigen? |
1 | Ja | ||
printingApprovalBatch | 0 | Nein | Batchverarbeitung auf Freigabeseite |
1 | Ja | ||
digitalCatalogue | 0 | Nein | Digitalen Katalog aktivieren |
1 | Ja | ||
masterloginInitialUserLoad | 0 | Nein | Masterlogin: Benutzer initial nicht aufgelistet |
1 | Ja | ||
masterloginFilter | 57 | A-Benutzer | Masterlogin: Benutzer filtern |
58 | B-Benutzer | ||
59 | C-Benutzer | ||
Mehrfachauswahl (Übergabe als Array) | |||
articleManagementFields | article_type | Artikeltyp | Felder für Artikelverwaltung im Shop |
article_groupid | Zugeordnete Warengruppen | ||
article_assigned_budgetgruppe__id | Zugeordnete Benutzergruppen | ||
article_sap_nummer | SAP-Nummer | ||
orderby | Sortierung | ||
status | Status | ||
article_desc | Bezeichnung | ||
article_desc_intern | Interne Bezeichnung | ||
article_fulldesc | Beschreibung | ||
article_zusatzinfo | Zusatzinfo | ||
file | Datei hochladen | ||
previewfile[] | Vorschaubilder hochladen | ||
pdfpreviewfile | Vorschaudatei (zum Download) | ||
preview_width | Artikelvorschaugröße (Vorschau) | ||
previewImageZoomedSize | Artikelvorschaugröße (Zoom) | ||
detail_page | Detailseite für Artikel | ||
showOnStarpage | Auf Startseite verfügbar | ||
hide_price_in_cart | Preise im Warenkorb / E-Mails ausblenden? | ||
article_max_bestellmenge | max. Bestellmenge | ||
article_preisstaffelart | Darstellung der Preisstaffelauswahl | ||
article_stock_yn | Status | ||
article_stock_value | Lagerbestand | ||
article_stock_min | Mindestbestand | ||
article_stock_mail | Benachrichtigungs-E-Mail | ||
article_stock_lagerort | Lagerort | ||
article_stock_show_yn | Sichtbarkeit für Kunden | ||
article_fadeout_jn | Sichtbarkeit für Kunden, wenn Bestand 0 | ||
stock_residue | Lagerrückstand erlauben? | ||
stockAvailabilityYellow | Verfügbarkeit gelb ab | ||
stockAvailabilityGreen | Verfügbarkeit grün ab | ||
stockAvailabilityNotification | Lagerbestand Benachrichtigungen | ||
additional_fields_yn | alle Zusatzfelder | ||
Mehrfachauswahl (Übergabe als Array) | |||
frontendArticlePriceedit | 0 | Nein | Preise bei Frontendbearbeitung ausblenden |
1 | Ja | ||
frontendArticleMultilingualedit | 0 | Nein | Internationale Felder bei Frontendbearbeitung ausblenden |
1 | Ja | ||
CustomerUserFrontendAdministrationForBudgets | 0 | Nein | Für Budgetverwaltung in der Frontend-Benutzerverwaltung berechtigen |
1 | Ja | ||
usermanagement_listmode | shopdefault | wie in Shop-Einstellungen | Auflistungsmodus der Benutzerverwaltung |
name | Vor- & Nachname | ||
contactperson | Ansprechpartner | ||
sharePersonalizationDraftsAllowed | disabled | Teilen nicht zulassen | Teilen von Personalisierungsentwürfen |
userGroup | mit eigener Benutzergruppe | ||
shop | mit eigener Benutzer und allen Benutzern | ||
DisableDeliveryAddressEditable | 0 | Ja | Lieferadresse im Warenkorb editierbar |
1 | Nein, ohne E-Mail | ||
2 | Nein | ||
approval_email_recipient | E-Mail-Adresse | E-Mail Adresse für Kostenfreigabe | |
Anwendungsbeispiele
Stornierung einer Bestellung
Für die Stornierung einer Bestellung über die SSO-Schnittstelle sind folgende Werte bei der Übergabe erforderlich:
Parametername | Erforderlicher Wert |
|---|---|
request_time | Datum und Uhrzeit des Zeitpunkt des Aufrufs, formatiert nach ISO-8501 |
dest_page | cancel_order |
dest_id | Eindeutiger Bestellcode |
Übergabe von Personalisierungsdaten
Mit der SSO-Schnittstelle kann nach einem erfolgreichen Login direkt mit der Personalisierung eines bestimmten Artikels begonnen werden. Hierzu müssen über den SSO-Link die Parameter pers mit dem Wert „true" und der Parameter dest_page mit dem Wert „pers" übergeben werden.
Zusätzlich können über den weiteren Parameter pers_data die gewünschten Personalisierungsdaten übergeben werden. Hierbei gibt es zwei Möglichkeiten zur Datenübergabe:
Personalisierungsdaten als Array (der key entspricht der Personalisierungsvariable der Druckvorlage und das zugehörige value enthält die gewünschten Daten für die Personalisierung).
ID eines gespeicherten Datensatzes aus der PRINT LOUNGE
Codebeispiel zur Erzeugung des SSO-Links mit Personalisierungsdaten in PHP:
php (new DateTimeImmutable)->format(DateTime::ISO8601), 'customer_user_name' => 'example_user', 'customer_firstname' => 'printy', 'customer_lastname' => 'tester', 'pers' => true, 'pers_data' => [ 'Unternehmen' => 'Beispiel-Unternehmen', 'Abteilung' => 'Abteilung 1' ] ]; passphrase = 'SECRET_RANDOM_PASSPHRASE'; $cipher = 'aes-128-gcm'; $initializationVectorLength = openssl_cipher_iv_length($cipher); $initializationVecotr = openssl_random_pseudo_bytes($initializationVectorLength); $encryptedShopUserData = openssl_encrypt(http_build_query($shopUserData), $cipher, $passphrase, 0, $iv); $ssoLoginLink = 'https://shop.print-server.net/sso.php?h=' . urlencode($encryptedShopUserData);]]>