Authentifizierungssystem


Uebersicht zur Authentifizierung

Die Anwendung nutzt zwei unterschiedliche Anmeldeablaeufe:

  • Admin-Panel: Standardanmeldung mit E-Mail und Passwort
  • App-Panel: E-Mail plus Einmalpasswort (OTP)

Der Zugriff ist ausserdem nach Benutzertyp getrennt:

  • Benutzer vom Typ admin koennen auf /admin zugreifen
  • Benutzer vom Typ company koennen auf /app zugreifen

Admin-Panel-Anmeldung

Das Admin-Panel verwendet die Standard-Loginseite von Filament.

Wer es nutzt

  • Shop-Superadmins, die waehrend der Shopify-Installation erstellt werden

So funktioniert es

  • Anmeldung mit E-Mail und Passwort
  • hier ist kein OTP-Schritt implementiert
  • Passwortaenderungen erfolgen ueber die Seite Passwort aendern im Admin-Panel

App-Panel-Anmeldung

Das App-Panel verwendet einen benutzerdefinierten OTP-Anmeldeablauf.

Schritt 1: E-Mail eingeben

Der Benutzer gibt auf /app/login seine E-Mail-Adresse ein.

Die App prueft:

  • ob der Benutzer im Kontext des aktuellen Shops existiert
  • ob die E-Mail zum Shop der aktuellen Subdomain gehoert

Schritt 2: OTP per E-Mail

Wenn der Benutzer existiert, macht die App Folgendes:

  • erzeugt ein 6-stelliges OTP
  • hasht und speichert es
  • setzt eine Ablaufzeit von 10 Minuten
  • sendet das OTP per E-Mail an den Benutzer

Schritt 3: OTP verifizieren

Der Benutzer gibt das OTP ein. Wenn es uebereinstimmt und noch nicht abgelaufen ist:

  • wird der Benutzer angemeldet
  • werden die OTP-Felder geleert
  • werden nicht verifizierte Benutzer zur E-Mail-Verifizierungsaufforderung weitergeleitet

OTP erneut senden und Ratenbegrenzung

Die Loginseite unterstuetzt das erneute Senden des OTP. Fuer den OTP-Anfrageablauf ist eine Ratenbegrenzung implementiert, um Missbrauch zu reduzieren.

Unternehmensregistrierung und E-Mail-Verifizierung

Das App-Panel enthaelt ausserdem eine benutzerdefinierte Registrierungsseite unter /app/register.

Bei der Registrierung erfasste Daten

  • Unternehmensname
  • Name des ersten Standorts
  • Lieferadresse
  • Rechnungsadresse
  • Hauptkontaktinformationen
  • Zahlungsbedingungen

Was nach der Registrierung passiert

  1. Ein Benutzer vom Typ company wird im inaktiven Zustand erstellt.
  2. Ein ausstehender Unternehmensregistrierungsdatensatz wird gespeichert.
  3. Eine Verifizierungs-E-Mail wird versendet.
  4. Nach der E-Mail-Verifizierung erstellt die App im Hintergrund das Shopify-Unternehmen und die lokalen Unternehmensdaten.
  5. Der verifizierte Benutzer wird zu CompanyAdmin hochgestuft und aktiviert.

Das bedeutet: Das Unternehmen wird erst nach der E-Mail-Verifizierung finalisiert, nicht sofort beim Absenden des Formulars.

Benutzertypen und Rollen

Benutzertypen

  • admin
  • company

Derzeit definierte Unternehmensrollen

  • Requester
  • Orderer
  • OrdererAdmin
  • BudgetAdmin
  • CompanyAdmin

Diese Rollen werden in Ressourcen-Policies und Bestellaktionen im gesamten App-Panel verwendet.

Mandantenzugriff

Das App-Panel ist mandantenbasiert nach Unternehmen.

Was das bedeutet

  • ein Unternehmensbenutzer kann zu einem oder mehreren Unternehmen gehoeren
  • Filament verwendet den Unternehmens-Slug in den App-Panel-URLs
  • Benutzer koennen nur auf Unternehmen zugreifen, denen sie zugewiesen sind

Die Sichtbarkeit von Bestellungen wird in den implementierten Policies zusaetzlich durch Rollen- und Standortzuweisung eingeschraenkt.

Aktuelle Sicherheitsfunktionen

Der aktuelle Stand enthaelt:

  • Shop-Isolierung pro Subdomain
  • getrennte Zugriffspruefungen fuer Admin- und Unternehmens-Panel
  • OTP-basierte Anmeldung fuer Unternehmensbenutzer
  • E-Mail-Verifizierung fuer das Onboarding von Unternehmensbenutzern
  • Sitzungsregenerierung nach erfolgreicher App-Panel-Anmeldung
  • standort- und mandantenbezogener Datenzugriff in Ressourcen

Derzeit nicht als implementiert dokumentiert

Die aktuelle Codebasis liefert keine Hinweise auf:

  • SSO
  • LDAP oder Verzeichnissynchronisation
  • konfigurierbare Zwei-Faktor-Methoden ueber OTP per E-Mail hinaus
  • Self-Service-Flow zum Zuruecksetzen des Passworts im App-Panel