Single-Sign-On Schnittstelle v2.0

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 Dokumentationlistfalse

Voraussetzungen

  • 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).

note

Diese 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 HOOK_URL an.

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 request_time ist erforderlich.

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:

  • Benutzergruppe nicht vorhanden

  • User-ID nicht vorhanden oder nicht eindeutig

  • Referrer nicht erlaubt

  • Sonstiger Fehler (Verschlüsselung, etc.)

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
1: aktiviert (Link zum Shop)
2: Link zum SSO-Übergabepunkt

Zeigt im Warenkorb den Button „Weiter einkaufen“.

note

Wenn aktiviert wird der skip_cart-Parameter ignoriert.

Wenn aktiviert wird der skip_cart-Parameter ignoriert.

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)

note

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.

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

customer_user_country

string

max 200 Zeichen (UTF-8)

Shop-Benutzer » Land

veraltet, bitte customer_user_countrycode verwenden

customer_user_countrycode

string

Shop-Benutzer » Land

note

Lä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) 
58: B – Supervisor
59: C – Verwaltung
60: X – Interessenten

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
1: Nein, ohne E-Mail-Adresse
2: Nein

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
pers: Personalisierungsseite
article_detail: Artikel-Detailseite
reorder: Nachbestellung

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
54: Nein (Standard)

Shop-Benutzer » Freigabeportal anzeigen

group_customer_number

string

Benutzergruppe » Kundennummer

note

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.

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

note

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.

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

  • Language ID: Zu finden unter: Shops → Bearbeiten → Spracheinstellungen

  • de_DE oder en_EN, wenn die Option „Mehrsprachiges Bestellportal“ unter Verwaltung → Einstellung → Allgemein nicht aktiviert ist.

Sprache

pers_data

Dient der Übermittlung von Personalisierungsdaten (siehe unten)

quantity

integer

Die Anzahl aus der Preisstaffel

note

Wird 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
54: Nein (Standard)

Shop-Benutzer » Warenkorb überspringen

sprache

string

de: Deutsch (Standard)
en: Englisch

Sprache

veraltet, bitte lang verwenden

test

Testmodus aktivieren

note

Zum 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:

  • cookie_notice

  • color_bar

  • top_header

  • header

  • nav

  • footer

  • iframe_autoheight

Mögliche Werte für alle Keys:

1: aktivieren / anzeigen
0: deaktivieren / ausblenden 

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“:

json

Verfü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:

  1. 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).

  2. 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);]]>