Digitale Verlags-Plattform
Eine Plattform.
Alles aus einer Hand.
ASMIQ liefert die komplette digitale Infrastruktur für Medienhäuser – von Identity Management über Abo-Verwaltung bis E-Commerce, nahtlos integriert.
ASMIQ.iam – Identity & OAuth2
ASMIQ.shop – E-Commerce
ASMIQ.one – Abo-Verwaltung
Auftragsverwaltung
Systemarchitektur
Plattform-Übersicht
ASMIQ.iam steht im Zentrum als OAuth2/OpenID Connect Identity Provider. Alle digitalen Touchpoints – Website, App, Shop – authentifizieren sich über eine einzige, zentrale Infrastruktur.
Gesamtarchitektur – Multi-Consumer OAuth2
graph TB
subgraph CONSUMERS["Consumer-Schicht"]
direction LR
WEB["Website / CMS"]
APP["Mobile App"]
SHOP["Online-Shop"]
FUTURE["Weitere Services"]
end
subgraph ASMIQ["ASMIQ Plattform"]
direction TB
IAM["ASMIQ.iam
OAuth2 / OpenID Connect
Identity Provider"]
ONE["ASMIQ.one
Abo-Verwaltung
Self-Service API"]
ORDER["Auftragsverwaltung
Bestellungen und Fulfillment"]
SHOPBE["ASMIQ.shop
E-Commerce Backend"]
FIN["Finance
Buchhaltungs-Schnittstelle"]
IAM --> ONE
SHOPBE --> ORDER
ORDER --> ONE
ORDER --> FIN
end
subgraph PARTNERS["Partner-Systeme"]
VB["Verlagsbuchhaltung"]
PRINT["Druckpartner / Versand"]
end
WEB -- OAuth2 --> IAM
APP -- OAuth2 --> IAM
SHOP -- OAuth2 --> IAM
FUTURE -- OAuth2 --> IAM
FIN --> VB
ONE --> PRINT
style IAM fill:#e62053,color:#FFFFFF,stroke:#e62053
style ONE fill:#000000,color:#FFFFFF,stroke:#000000
style ORDER fill:#545454,color:#FFFFFF,stroke:#545454
style SHOPBE fill:#333333,color:#FFFFFF,stroke:#333333
style FIN fill:#666666,color:#FFFFFF,stroke:#666666
style WEB fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style APP fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style SHOP fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style FUTURE fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style VB fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style PRINT fill:#f5f5f5,color:#000000,stroke:#c2c2c2
Kernprinzip: Jeder Consumer spricht OAuth2 mit ASMIQ.iam. Kein System muss eine eigene Benutzerverwaltung aufbauen – die Berechtigungen stehen direkt im JWT-Token.
ASMIQ.iam
Identity Management
OAuth2-basiert.
ASMIQ.iam fungiert als zentraler Authorization Server. Alle Authentifizierung und Autorisierung läuft über einen einzigen, sicheren Punkt – mit Industry-Standard OAuth2 / OpenID Connect.
Authorization Code Flow
Login-Ablauf im Detail
Der vollständige OAuth2 Authorization Code Flow mit PKCE – vom Login-Klick bis zum validierten JWT-Token, das alle Berechtigungen enthält.
OAuth2 Authorization Code Flow (PKCE)
sequenceDiagram
participant U as User
participant W as Website / App
participant I as ASMIQ.iam
participant A as ASMIQ.one API
Note over U,A: 1 - Login-Initialisierung
U->>W: Klickt Login
W->>W: Generiert Code Verifier (PKCE)
W->>I: Redirect /authorize + client_id, scope, code_challenge
Note over U,A: 2 - Authentifizierung
I->>U: Login-Formular
U->>I: Credentials eingeben
I->>I: Validiert und erstellt Session
Note over U,A: 3 - Authorization Code
I->>W: Redirect zurueck mit ?code=xyz
Note over U,A: 4 - Token Exchange
W->>I: POST /token + code + code_verifier
I->>W: access_token (JWT), refresh_token, id_token
Note over U,A: 5 - Geschuetzte Ressourcen
W->>A: GET /api/subscriptions Authorization: Bearer token
A->>A: Validiert JWT
A->>W: Abo-Daten
Note over U,A: 6 - Token Refresh
W->>I: POST /token + refresh_token
I->>W: Neuer access_token
Multi-Consumer Architektur
graph LR
IAM["ASMIQ.iam
Authorization Server
login.asmiq.ch"]
subgraph CONSUMERS["Registrierte Consumer"]
C1["Website
client_id: web-app"]
C2["Mobile App
client_id: mobile"]
C3["Shop
client_id: shop"]
C4["Newsletter-Tool
client_id: newsletter"]
end
subgraph ENDPOINTS["Standard OAuth2 Endpoints"]
E1["/authorize"]
E2["/token"]
E3["/userinfo"]
E4["/.well-known/openid-configuration"]
end
C1 --> IAM
C2 --> IAM
C3 --> IAM
C4 --> IAM
IAM --- E1
IAM --- E2
IAM --- E3
IAM --- E4
style IAM fill:#e62053,color:#FFFFFF,stroke:#e62053
style C1 fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style C2 fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style C3 fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style C4 fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style E1 fill:#FBFBFB,color:#000000,stroke:#c2c2c2
style E2 fill:#FBFBFB,color:#000000,stroke:#c2c2c2
style E3 fill:#FBFBFB,color:#000000,stroke:#c2c2c2
style E4 fill:#FBFBFB,color:#000000,stroke:#c2c2c2
JWT Token & Claims
Berechtigungen direkt
im Token.
ASMIQ.iam verpackt alle Subscription-Attribute als einfache True/False-Werte im JWT. Kein API-Call, keine Datenbank-Abfrage beim Consumer – alles steckt im Token.
Token-Struktur
JWT mit Subscription-Attributen
Das ASMIQ-Prinzip: Statt komplexer Rollen-Hierarchien nutzen wir einfache Boolean-Attribute für jede Subscription. Der Consumer liest aus – fertig.
Beispiel JWT Payload
{
"sub": "user-12345",
"email": "user@beispiel.ch",
"name": "Max Muster",
"iss": "https://login.asmiq.ch",
"aud": "publisher-cms",
"exp": 1735689600,
"subscriptions": {
"pub_print_basis": true,
"pub_print_premium": false,
"pub_digital": true,
"pub_archive": false,
"pub_newsletter": true
},
"subscription_status": "active",
"subscription_expires": "2027-06-30",
"customer_number": "PUB-456789"
}
Consumer-Code (Beispiel PHP)
$decoded = JWT::decode($token, $pubKey);
$email = $decoded->email;
$name = $decoded->name;
$customerNr = $decoded->customer_number;
if ($decoded->subscriptions->pub_digital) {
} else {
}
Berechtigungsmatrix – User-Zustände
graph TB
TOKEN["JWT Token
subscriptions.pub_digital = true/false
subscription_status = active/expired/none"]
TOKEN --> A{Status?}
A -->|active + pub_digital = true| B["Vollzugriff
Alle Artikel, Downloads, Archive"]
A -->|active + pub_digital = false| C["Basis-Zugang
Nur freigegebene Inhalte"]
A -->|expired| D["Abgelaufen
Teaser + Verlaengerungs-CTA"]
A -->|none / kein Token| E["Nur Login
Kostenlose Inhalte + Kauf-CTA"]
style B fill:#000000,color:#FFFFFF,stroke:#000000
style C fill:#e62053,color:#FFFFFF,stroke:#e62053
style D fill:#545454,color:#FFFFFF,stroke:#545454
style E fill:#666666,color:#FFFFFF,stroke:#666666
style TOKEN fill:#f5f5f5,color:#000000,stroke:#c2c2c2
Neuer Abo-Typ? In ASMIQ.one eine neue Subscription-Kategorie anlegen. Das Token enthält automatisch das neue Attribut – kein Code-Change beim Consumer nötig.
Self-Service
Abo-Verwaltung
für Endkunden.
Abonnenten verwalten ihr Abo direkt über ASMIQ – via Redirect zu login.asmiq.ch. Der Consumer (CMS, App) muss kein eigenes User-Backend bauen.
User Journey
Redirect-Flow zur Selbstverwaltung
Via Redirect-Mechanismus gelangen User nahtlos zur ASMIQ Self-Service Oberfläche. Nach Änderungen kehren sie zurück zum Publisher-Portal.
Self-Service Redirect-Flow
graph TB
U["Abonnent auf publisher-website.ch"]
subgraph STEP1["Schritt 1 - Initialisierung"]
W1["Klickt: Mein Abo verwalten"]
R1["Redirect zu login.asmiq.ch
action=manage
return_uri=publisher-website.ch"]
end
subgraph STEP2["Schritt 2 - Bei ASMIQ"]
L{"Bereits eingeloggt?"}
LOGIN["Login / Session wiederherstellen"]
MANAGE["Self-Service Portal
Adresse anpassen
Zahlungsdaten
Abo pausieren / kuendigen
Zusatzprodukte kaufen"]
end
subgraph STEP3["Schritt 3 - Rueckkehr"]
DONE["Aenderungen gespeichert"]
BACK["Redirect zurueck zur Publisher-Website
+ aktualisiertes Token"]
end
U --> W1 --> R1
R1 --> L
L -->|Nein| LOGIN --> MANAGE
L -->|Ja| MANAGE
MANAGE --> DONE --> BACK
style MANAGE fill:#000000,color:#FFFFFF,stroke:#000000
style LOGIN fill:#e62053,color:#FFFFFF,stroke:#e62053
style U fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style W1 fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style R1 fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style DONE fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style BACK fill:#f5f5f5,color:#000000,stroke:#c2c2c2
Vorteil für den Publisher-Entwickler: Es muss kein eigenes User-Management-Backend entwickelt werden. Adressänderungen, Zahlungsupdates, Abo-Pausierungen – alles läuft über ASMIQ.iam und wird direkt im erneuerten Token reflektiert.
ASMIQ.shop & Commerce
Bestellung bis Abo-Start
vollautomatisch.
Vom Shop-Kauf über die Auftragsverwaltung bis zur Abo-Eröffnung und Weiterleitung an Druck und Buchhaltung – alles in einem durchgehenden, automatisierten Flow.
E-Commerce Flow
Neukauf – End-to-End
Bestell- und Monetarisierungsflow
graph TB
U["Interessent"]
subgraph SHOP_LAYER["ASMIQ.shop - Neukauf"]
CART["Produktauswahl / Warenkorb"]
PAYMENT["Zahlungsabwicklung
Kreditkarte / LSV / Rechnung"]
end
subgraph ORDER_LAYER["Auftragsverwaltung"]
ORDER["Internet-Auftrag erstellt"]
FULFILL["Fulfillment / Status-Tracking"]
end
subgraph ABO_LAYER["ASMIQ.one - Abo-Eroeffnung"]
ABO["Abo-Datensatz angelegt / aktiviert"]
TOKEN_UPDATE["Token-Attribute aktualisiert"]
end
subgraph PARTNERS_LAYER["Partner-Systeme"]
VB["Verlagsbuchhaltung
Rechnungsdaten"]
PRINT["Druckpartner
Adress- und Versanddaten"]
end
U --> CART --> PAYMENT
PAYMENT --> ORDER
ORDER --> FULFILL
FULFILL --> ABO
ABO --> TOKEN_UPDATE
ORDER --> VB
ABO --> PRINT
style ORDER fill:#545454,color:#FFFFFF,stroke:#545454
style ABO fill:#000000,color:#FFFFFF,stroke:#000000
style TOKEN_UPDATE fill:#e62053,color:#FFFFFF,stroke:#e62053
style U fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style CART fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style PAYMENT fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style VB fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style PRINT fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style FULFILL fill:#f5f5f5,color:#000000,stroke:#c2c2c2
Wiederkehrende Verlängerungen (Recurring)
graph LR
TRIGGER["Verlaengerungs-Trigger
30 / 14 / 7 Tage vorher"]
subgraph RENEWAL["Automatischer Verlaengerungsflow"]
CHECK{"Zahlungsmittel hinterlegt?"}
AUTO["Automatisch verlaengern"]
INVOICE["Rechnung an Verlagsbuchhaltung"]
MANUAL["Zahlungsaufforderung per E-Mail"]
end
subgraph ABO_UPDATE["ASMIQ.one Update"]
ABO_RENEW["Abo-Laufzeit verlaengert"]
TOKEN_NEW["Neues Token-Ablaufdatum"]
end
TRIGGER --> CHECK
CHECK -->|Ja| AUTO --> INVOICE --> ABO_RENEW
CHECK -->|Nein| MANUAL --> ABO_RENEW
ABO_RENEW --> TOKEN_NEW
style AUTO fill:#000000,color:#FFFFFF,stroke:#000000
style ABO_RENEW fill:#e62053,color:#FFFFFF,stroke:#e62053
style TRIGGER fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style INVOICE fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style MANUAL fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style TOKEN_NEW fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style CHECK fill:#f5f5f5,color:#000000,stroke:#c2c2c2
Vergleich
Klassisch vs.
OAuth2-basiert.
Warum ein zentrales Identity-Management den Entwicklungsaufwand beim Publisher massiv reduziert – und gleichzeitig die Skalierbarkeit erhöht.
Gegenüberstellung
Klassische API vs. OAuth2 Approach
| Thema |
Klassische Integration |
ASMIQ OAuth2 |
| Login-System |
Selbst entwickeln, eigene DB |
Von ASMIQ.iam übernommen |
| Session-Verwaltung |
Selbst implementieren |
Token macht das automatisch |
| Rechte prüfen |
API-Call bei jedem Request |
Direkt im JWT auslesen |
| Synchronisation |
Regelmäßige Sync-Jobs nötig |
Token immer aktuell |
| Neuer Abo-Typ |
Alle Systeme anpassen, Deploy |
In ASMIQ anlegen – fertig |
| Datenbank-Calls |
Viele, bei jedem Seitenaufruf |
Ein Token-Check reicht |
| Selbstverwaltung |
Eigenes Backend entwickeln |
Redirect zu ASMIQ.iam |
| Mehrere Apps |
Jede App: eigene User-DB |
Alle teilen ASMIQ.iam |
Verantwortungsabgrenzung
graph TB
subgraph ASMIQ_RESP["ASMIQ verantwortet"]
R1["Identity Management
Login, Sessions, OAuth2"]
R2["E-Commerce
Shop, Zahlungen"]
R3["Auftragsabwicklung
Fulfillment, Status"]
R4["Abo-Lifecycle
Aktivierung, Verlaengerung, Kuendigung"]
end
subgraph PARTNER_RESP["Partner - Kernkompetenz"]
P1["Buchhaltung
Rechnungsstellung, Mahnwesen"]
P2["Druck / Versand
Produktion, Logistik"]
P3["CMS / Website
Content, Design, Redaktion"]
end
subgraph INTERFACES["Schnittstellen"]
I1["ASMIQ zu Buchhaltung
Rechnungsdaten"]
I2["ASMIQ zu Druck
Adress- und Versanddaten"]
I3["ASMIQ.iam zu CMS
OAuth2 Token"]
end
R3 --> I1 --> P1
R4 --> I2 --> P2
R1 --> I3 --> P3
style R1 fill:#e62053,color:#FFFFFF,stroke:#e62053
style R2 fill:#333333,color:#FFFFFF,stroke:#333333
style R3 fill:#545454,color:#FFFFFF,stroke:#545454
style R4 fill:#000000,color:#FFFFFF,stroke:#000000
style P1 fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style P2 fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style P3 fill:#f5f5f5,color:#000000,stroke:#c2c2c2
style I1 fill:#FBFBFB,color:#000000,stroke:#c2c2c2
style I2 fill:#FBFBFB,color:#000000,stroke:#c2c2c2
style I3 fill:#FBFBFB,color:#000000,stroke:#c2c2c2
Das zentrale Argument: Der Publisher (CMS-Entwickler) implementiert OAuth2 – einen Industry-Standard. Er muss kein eigenes User-Management aufbauen, keine Subscription-Logik entwickeln, keine Synchronisations-Jobs betreiben. ASMIQ liefert die Infrastruktur, der Publisher konzentriert sich auf Content und UX.