# Auto-Login

Wie Auto-Login einen Punchout-Einkäufer mit einem signierten Einmal-Token in seinem Shop-Konto anmeldet, was Sie im Portal und im Plugin einstellen und was passiert, wenn ein Teil fehlt.

URL: https://punchout.dev/de/docs/plugins/auto-login/

Auto-Login meldet einen Punchout-Einkäufer gleich beim Start in seinem Kundenkonto in Ihrem Shop an. So sieht er seine eigenen Preise und sein Sortiment statt der Gastpreise.

## Wozu es dient

Ein Einkaufssystem meldet sich mit seinem Einkäufer-Zugang bei punchout.dev an, nicht in Ihrem Shop. Ohne Auto-Login landet der Einkäufer als Gast in Ihrem Shop. Zeigt Ihr Shop kundenspezifische Preise, Vertragssortimente oder Preise erst nach dem Login, trägt der Gast-Warenkorb die falschen Preise in die Bedarfsanforderung.

Mit Auto-Login weiß punchout.dev, für welchen Shop-Kunden jeder Einkäufer-Zugang steht. Beim Launch schickt es den Browser mit einem kurzlebigen, signierten Token statt eines Passworts an den Login-Endpunkt Ihres Shops. Das Shop-Plugin prüft das Token und meldet diesen Kunden an.

## Was Sie brauchen

| Baustein | Wo |
| --- | --- |
| Ein Login-Endpunkt im Shop | Eines der [Shop-Plugins](https://punchout.dev/de/docs/plugins/) oder [Ihr eigener](https://punchout.dev/de/docs/plugins/custom/) |
| Auto-Login eingeschaltet, mit Adapter, Login-Pfad und Kundenreferenz | Portal, Tab **Auto-Login** des Shops |
| Die Public-Key-Zeile im Plugin | Portal, Tab Auto-Login, Abschnitt **Öffentliche Schlüssel** |
| Ein Shop-Kunde je Einkäufer-Zugang | Portal, Tab **Einkäufer**, Feld **Shop-Kundenreferenz** |
| Ein gehosteter Launch | Das Einkaufssystem nutzt den **OCI-Launch**, den **cXML PunchOutSetupRequest** oder die **IDS Connect Roundtrip-URL** aus dem Tab Einbindung |

:::note
Ein direkter OCI-Launch, bei dem das Einkaufssystem die Adresse Ihres Shops selbst öffnet, nutzt nie Auto-Login: An diesem Punkt hat niemand einen Zugang geprüft. Nutzen Sie stattdessen die gehostete URL **OCI-Launch** aus dem Tab Einbindung. Auch der Test-Punchout des Portals nutzt kein Auto-Login.
:::

## Einrichten

### 1. Der Tab Auto-Login im Portal

| Feld | Bedeutung |
| --- | --- |
| Auto-Login aktivieren | Schaltet die Weiterleitung an den Login-Endpunkt Ihres Shops ein. |
| Adapter | Shopware, Magento, WooCommerce oder **Eigener Adapter**. Er hält fest, welchen Endpunkt Sie betreiben, und ändert nichts am Token. Bei WooCommerce und Magento zeigt der Tab dann den Pfad dieses Plugins und was jede Kundenreferenz dort bedeutet. |
| Login-Pfad | Der Pfad des Endpunkts in Ihrem Shop, beginnend mit `/`. Die Weiterleitung geht an den ersten Eintrag unter **Erlaubte Origins** im Tab Allgemein, gefolgt von diesem Pfad. |
| Kundenreferenz | Wie jede **Shop-Kundenreferenz** dieses Shops gelesen wird: **Kunden-ID**, **Kundennummer** oder **E-Mail-Adresse**. |

Was jede Art je Plattform bedeutet:

| Kundenreferenz | Shopware | WooCommerce | Magento |
| --- | --- | --- | --- |
| Kunden-ID | Die ID des Kunden | Die numerische WordPress-Benutzer-ID | Die Kunden-Entity-ID |
| Kundennummer | Die Kundennummer | Der WordPress-Anmeldename | Nicht unterstützt, der Einkäufer landet als Gast |
| E-Mail-Adresse | Die E-Mail-Adresse des Kunden | Die E-Mail-Adresse des Benutzers | Die E-Mail-Adresse des Kunden auf der aktuellen Website |

### 2. Die Public-Key-Zeile

Der Abschnitt **Öffentliche Schlüssel** im selben Tab zeigt die Public-Key-Zeile, zum Beispiel `k1=…`. Fügen Sie sie in die Plugin-Einstellung **Public-Key-Zeilen** ein. Damit prüft das Plugin die Signatur. Es ist ein öffentlicher Schlüssel: Er kann Tokens prüfen, aber nie eines erzeugen.

Sagt der Abschnitt „Es ist kein Signaturschlüssel hinterlegt. Ohne ihn landet jeder Punchout auf der normalen Landing-Seite.“, gibt es keinen Schlüssel zum Einfügen, und Auto-Login lässt sich nicht einrichten.

Zeigt der Abschnitt mehr als eine Zeile, fügen Sie alle ein.

### 3. Die Zuordnung je Einkäufer

Öffnen Sie im Tab **Einkäufer** einen Zugang und füllen Sie **Shop-Kundenreferenz** aus („Auf welches Shop-Konto der Auto-Login diesen Einkäufer anmeldet.“): die Kunden-ID, die Kundennummer oder die E-Mail-Adresse des Shop-Kontos, passend zu der Art, die im Tab Auto-Login gewählt ist. Ein Zugang ohne diesen Eintrag landet weiter als Gast, auch wenn Auto-Login an ist.

## Der Ablauf

1. **Launch.** Das Einkaufssystem startet einen gehosteten Launch, und punchout.dev prüft den Einkäufer-Zugang.
2. **Token.** Ist Auto-Login an und hat der Zugang eine Shop-Kundenreferenz, stellt punchout.dev ein signiertes Login-Token aus. Es ist 120 Sekunden gültig, nur einmal und nur in Ihrem Shop verwendbar. Es nennt den Kunden und Ihren **Landing-Pfad**.
3. **Weiterleitung.** Der Browser geht mit dem Token an den Login-Pfad Ihres Shops, zum Beispiel `https://shop.example/punchout-dev/login?token=…`.
4. **Anmeldung.** Das Plugin prüft das Token, sucht genau einen passenden Kunden und meldet ihn an.
5. **Warenkorbseite.** Das Plugin leitet auf Ihre Landing-Seite weiter. Dort läuft der Punchout weiter, und der Einkäufer kauft angemeldet ein.

Das Token enthält kein Geheimnis. Weil es durch den Browser des Einkäufers reist, ist es kurzlebig, nur einmal verwendbar und auf einen Shop beschränkt, und es kann nur auf einen Pfad in Ihrem eigenen Shop führen, nie an ein anderes Ziel.

## Wenn ein Teil fehlt

Auto-Login bricht nie einen Punchout ab.

| Situation | Was passiert |
| --- | --- |
| Auto-Login aus, keine Shop-Kundenreferenz am Zugang oder kein Signaturschlüssel | Der Browser geht direkt auf die normale Landing-Seite, und der Einkäufer kauft als Gast ein. |
| Das Plugin lehnt das Token ab | Das Plugin leitet ohne Anmeldung auf die Landing-Seite weiter. Der Punchout läuft als Gast weiter. |
| Der Login-Pfad ist falsch | Der Browser landet auf dem, was Ihr Shop unter diesem Pfad ausliefert, meist auf seiner 404-Seite. |
| **Auto-Login aktivieren**, **Shop-ID** oder **Public-Key-Zeilen** ist im Plugin aus oder leer | Das Plugin leitet ohne Anmeldung auf die Landing-Seite weiter. Der Punchout läuft als Gast weiter. |

:::note
Shopware: War Auto-Login im Plugin ausgeschaltet oder nicht eingerichtet, leitete Plugin 2.0.0 auf `/` statt auf die Landing-Seite weiter, und der Punchout ging verloren. Aktualisieren Sie auf 2.0.1 oder neuer.
:::

## Was das Plugin protokolliert

Jedes Plugin schreibt je abgelehntem Token eine Zeile mit einem Ablehnungsgrund ins eigene Log des Shops. Keines protokolliert das Token oder den Kunden.

| Plattform | Log |
| --- | --- |
| Shopware 6 | Shopware-Log, Level Warning |
| Magento 2 | `var/log/system.log`, Level Info |
| WooCommerce | PHP-Fehlerlog, nur mit `WP_DEBUG` an |

Diese Ablehnungsgründe sehen Sie am häufigsten. Eine vertippte oder abgeschnittene Schlüsselzeile überspringt das Plugin; sie zeigt sich deshalb als `not_configured` oder `kid_unknown`.

| Grund | Ursache | Lösung |
| --- | --- | --- |
| `not_configured` | Shop-ID im Plugin leer, oder keine lesbare Zeile in **Public-Key-Zeilen** | Füllen Sie beides aus |
| `disabled` | **Auto-Login aktivieren** ist im Plugin aus | Schalten Sie es ein |
| `kid_unknown` | In **Public-Key-Zeilen** fehlt die aktuelle Zeile aus dem Portal, zum Beispiel wenn nur eine alte Zeile dort steht | Fügen Sie die aktuelle Zeile aus dem Portal ein |
| `signature_invalid` | Eine Zeile in **Public-Key-Zeilen** ist falsch oder veraltet | Fügen Sie die aktuelle Zeile aus dem Portal ein |
| `audience` | Die Shop-ID im Plugin weicht von dem Shop ab, der den Launch gestartet hat | Kopieren Sie die Shop-ID aus dem Tab Einbindung |
| `expired` | Das Token kam mehr als 120 Sekunden nach seiner Ausstellung an, oder die Uhr des Shops geht vor | Starten Sie einen neuen Punchout. Passiert es jedes Mal, synchronisieren Sie die Serveruhr. |
| `iat_future` | Die Uhr des Shops geht nach | Synchronisieren Sie die Serveruhr |
| `replay` | Das Token wurde schon verwendet (ein Neuladen, die Zurück-Taste), oder die Tabelle des Plugins für verwendete Tokens fehlt | Starten Sie einen neuen Punchout. Passiert es jedes Mal, legen Sie die Tabelle neu an (siehe die Plattformseite). |
| `customer_unresolved` | Kein aktiver Kunde passt zur Referenz, oder mehr als einer | Prüfen Sie die **Shop-Kundenreferenz** und die Art der **Kundenreferenz** |
| `administrator_refused` | WooCommerce: Der zugeordnete Benutzer ist ein Administrator | Ordnen Sie ein gewöhnliches Kundenkonto zu |
| `unsupported_ref_kind` | Magento: Die Kundenreferenz ist Kundennummer | Nutzen Sie E-Mail-Adresse oder Kunden-ID |

## Einen eigenen Endpunkt bauen

Das Token-Format, die Prüfungen in ihrer Reihenfolge und den Testvektor beschreibt die [Spezifikation des Login-Tokens](https://punchout.dev/de/docs/plugins/custom/login-token/) (auf Englisch). Die Seite [Eigene Integration](https://punchout.dev/de/docs/plugins/custom/) erklärt, was Sie für einen eigenen Endpunkt im Portal einstellen.
