bg_image
header

OpenID Connect

OpenID Connect (OIDC) ist ein Authentifizierungsprotokoll, das auf OAuth 2.0 basiert. Es ermöglicht es Clients (z. B. Web-Apps, Mobile-Apps), die Identität eines Benutzers sicher zu verifizieren, der sich bei einem externen Identitätsanbieter (IdP) anmeldet — zum Beispiel Google, Microsoft, Apple, etc.


🔐 Kurz gesagt:

OAuth 2.0 → regelt die Autorisierung (Zugriff auf Ressourcen)
OpenID Connect → regelt die Authentifizierung (Wer ist der Benutzer?)


🧱 Wie funktioniert OpenID Connect?

  1. Benutzer klickt auf "Login mit Google"

  2. Deine App leitet den Benutzer zum Google-Login weiter

  3. Nach erfolgreichem Login leitet Google den Benutzer mit einem ID Token zurück

  4. Deine App validiert dieses JWT-Token

  5. Du weißt nun, wer der Benutzer ist – verifiziert von Google


🔑 Was enthält ein ID Token?

Das ID Token ist ein JSON Web Token (JWT) mit Informationen über den Benutzer, z. B.:

{
  "iss": "https://accounts.google.com",
  "sub": "1234567890",
  "name": "John Doe",
  "email": "john@example.com",
  "iat": 1650000000,
  "exp": 1650003600
}
  • iss = Issuer (z. B. Google)

  • sub = Benutzer-ID

  • email, name = Benutzerinformationen

  • iat, exp = Zeitstempel


🧩 Typische Anwendungsfälle

  • "Login mit Google/Microsoft/Apple"

  • Single Sign-On (SSO) in Unternehmen

  • Zentrale Identitätsverwaltung (Keycloak, Auth0, Azure AD)

  • OAuth-basierte APIs mit Identitätsprüfung


🛠️ Komponenten bei OpenID Connect

Komponente Beschreibung
Relying Party Deine App, die den Login anfordert
Identity Provider Der externe Login-Anbieter (z. B. Google)
ID Token Das JWT mit den Benutzerinformationen
UserInfo Endpoint (Optional) API für weitere Benutzerdaten

Deployer

Deployer ist ein Open-Source-Deployment-Tool für PHP-Projekte – speziell entwickelt, um Anwendungen wie Laravel, Symfony, Magento, WordPress oder auch generische PHP-Apps automatisiert, wiederholbar und sicher auf Server zu bringen.


🚀 Was macht Deployer besonders?

  • Es ist ein CLI-Tool, geschrieben in PHP.

  • Du definierst dein Deployment in einer deploy.php-Datei mit klaren Aufgaben (Tasks).

  • Es setzt auf das Prinzip Zero Downtime Deployment, z. B. durch Symlinks.

  • Unterstützt mehrstufige Umgebungen (z. B. staging, production).


🛠️ Typischer Workflow mit Deployer

Du installierst Deployer über Composer:

composer require deployer/deployer --dev

Du generierst ein Template:

vendor/bin/dep init

Du konfigurierst deploy.php, z. B. für Laravel:

host('mein-server.com')
    ->set('deploy_path', '/var/www/meinprojekt')
    ->set('branch', 'main');

task('deploy', [
    'deploy:prepare',
    'deploy:vendors',
    'artisan:migrate',
    'deploy:publish',
]);

Du startest das Deployment:

vendor/bin/dep deploy production

🔁 Was passiert im Hintergrund?

Deployer:

  • Verbindet sich via SSH mit dem Zielserver

  • Klont das Git-Repository in ein neues Release-Verzeichnis

  • Installiert Composer-Abhängigkeiten

  • Führt Tasks aus (z. B. php artisan migrate)

  • Verlinkt das neue Release mit dem Live-Verzeichnis (current)

  • Löscht alte Releases nach Bedarf


📦 Vorteile von Deployer

Vorteil Beschreibung
🚀 Schnell & Skriptbar Alles per CLI steuerbar
🔁 Rollback-Funktion Bei Fehlern einfach zum letzten funktionierenden Release zurück
⚙️ Flexibel erweiterbar Eigene Tasks, Hooks und Bedingungen
🧩 Viele Presets Für Laravel, Symfony, WordPress etc.
🔐 Sicher durch SSH Keine FTP-Abhängigkeit

Laravel Octane

Laravel Octane ist eine offizielle Erweiterung für das Laravel-Framework, die die Performance deiner Anwendung dramatisch verbessert, indem sie Laravel auf Hochleistungsservern wie Swoole oder RoadRunner ausführt.


Was macht Laravel Octane besonders?

Statt bei jeder HTTP-Anfrage den Laravel-Framework-Code neu zu laden (wie bei PHP-FPM üblich), hält Octane deine Anwendung permanent im Speicher. Das spart Bootstrapping-Zeit und macht deine App viel schneller.


🔧 Wie funktioniert das technisch?

Laravel Octane nutzt Worker-basierte Server (z. B. Swoole oder RoadRunner), die:

  1. Die Laravel-Anwendung einmalig booten,

  2. Dann Anfragen wiederholt und schnell verarbeiten, ohne das Framework neu zu starten.


🚀 Vorteile von Laravel Octane

Vorteil Beschreibung
Höhere Performance Bis zu 10x schneller als klassische Laravel-Setups mit PHP-FPM
🔁 Persistente Worker Keine Neuinitalisierung bei jeder Anfrage
🌐 WebSockets & Echtzeit Direkte Unterstützung dank Swoole/RoadRunner
🧵 Nebenläufigkeit Möglichkeit zur parallelen Verarbeitung von Aufgaben
🔧 Built-in Features Task Worker, Route Watcher, Task Dispatching usw.

RoadRunner

RoadRunner ist ein High-Performance Application Server für PHP, der von Spiral Scout entwickelt wurde. Er ersetzt den klassischen PHP-FPM (FastCGI Process Manager) und bietet durch eine dauerhafte Ausführung deiner PHP-Anwendung einen massiven Performance-Schub – besonders bei Frameworks wie Laravel oder Symfony.


🚀 Was macht RoadRunner besonders?

Performance durch Worker

  • PHP-Skripte werden nicht bei jeder Anfrage neu geladen, sondern laufen dauerhaft in sogenannten Worker-Prozessen (ähnlich wie bei Node.js oder Swoole).

  • Dadurch sparst du dir das erneute Bootstrapping deiner App bei jedem Request – das ist wesentlich schneller als bei PHP-FPM.

In Go geschrieben

  • RoadRunner selbst ist in der Programmiersprache Go geschrieben – das bedeutet hohe Stabilität, einfache Cross-Plattform-Deployments und parallele Verarbeitung von Anfragen.

Features

  • HTTP-Server (inkl. HTTPS, Gzip, CORS, etc.)

  • PSR-7 & PSR-15 Middleware-Kompatibilität

  • Unterstützung für:

    • Queues (z. B. mit RabbitMQ, Redis, etc.)

    • gRPC

    • WebSockets

    • Static file serving

    • Metrics (Prometheus)

    • RPC zwischen PHP und Go

  • Hot Reload für Änderungen im Code (mit Watch-Modul)


⚙️ Wie funktioniert RoadRunner technisch?

  1. RoadRunner startet PHP-Worker-Prozesse.

  2. Die Worker laden einmal den gesamten Framework-Bootstrap.

  3. RoadRunner verteilt HTTP- oder gRPC-Anfragen an die Worker.

  4. Die Antwort wird über Go zurückgegeben – schnell und parallel.


📦 Typischer Einsatz:

  • Laravel + RoadRunner (statt Laravel + PHP-FPM)

  • Anwendungen mit hoher Request-Frequenz

  • APIs, Microservices, Echtzeit-Anwendungen (z. B. mit WebSockets)

  • Serverless-ähnliche Dienste, wo Latenz kritisch ist


📉 Vergleich zu PHP-FPM

Eigenschaft PHP-FPM RoadRunner
Bootstrapping pro Request Ja Nein (persistente Worker)
Geschwindigkeit Gut Exzellent
WebSockets Nicht direkt Ja
gRPC Nein Ja
Sprache C Go

Secure Shell - SSH

SSH (Secure Shell) ist ein Netzwerkprotokoll, das eine verschlüsselte Verbindung zwischen zwei Computern herstellt. Es wird hauptsächlich verwendet, um sich sicher auf entfernte Systeme (z. B. Server) einzuloggen und Befehle auszuführen.

Wichtige Eigenschaften von SSH

  • Sicherheit: Daten werden verschlüsselt übertragen, was vor Abhören und Manipulation schützt.
  • Authentifizierung: Zugriff kann über Passwörter oder SSH-Schlüssel erfolgen.
  • Tunnel-Funktionalität: Kann zur sicheren Weiterleitung von Datenverkehr genutzt werden.
  • Dateitransfer: Ermöglicht mit SCP oder SFTP das Übertragen von Dateien zwischen Rechnern.

SSH-Befehle (Grundlagen)

  • Verbindung herstellen:
ssh benutzername@server-ip
  • Dateiübertragung mit SCP:
scp datei.txt benutzername@server-ip:/zielverzeichnis/
  • Öffentlichen SSH-Schlüssel hinterlegen (für passwortlose Anmeldung):
ssh-copy-id benutzername@server-ip

SSH wird oft von Entwicklern und Administratoren genutzt, um Server zu verwalten oder sichere Verbindungen für andere Anwendungen aufzubauen.


Fetch API

Die Fetch API ist eine moderne JavaScript-Schnittstelle für das Abrufen von Ressourcen über das Netzwerk, z. B. für HTTP-Requests an eine API oder das Laden von Daten von einem Server. Sie ersetzt weitgehend die ältere XMLHttpRequest-Methode und bietet eine einfachere, flexiblere und leistungsfähigere Möglichkeit, Netzwerkabfragen zu verwalten.

Grundlegende Funktionsweise

  • Die Fetch API basiert auf Promises, was asynchrones Arbeiten erleichtert.
  • Sie ermöglicht den Abruf von Daten in verschiedenen Formaten wie JSON, Text oder Blob.
  • Fetch arbeitet standardmäßig mit der GET-Methode, kann aber auch für POST, PUT, DELETE und andere HTTP-Methoden verwendet werden.

Ein einfaches Beispiel

fetch('https://jsonplaceholder.typicode.com/posts/1')
  .then(response => response.json()) // Antwort als JSON umwandeln
  .then(data => console.log(data)) // Daten ausgeben
  .catch(error => console.error('Fehler:', error)); // Fehlerbehandlung

Ein Request mit POST-Methode

fetch('https://jsonplaceholder.typicode.com/posts', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ title: 'Neuer Beitrag', body: 'Inhalt des Beitrags', userId: 1 })
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Fehler:', error));

Vorteile der Fetch API

✅ Einfachere Syntax als XMLHttpRequest
✅ Unterstützt async/await für bessere Lesbarkeit
✅ Flexibles Handling von Requests und Responses
✅ Bessere Fehlerbehandlung durch Promises

Die Fetch API ist mittlerweile in allen modernen Browsern verfügbar und eine essentielle Technik für die Webentwicklung.

 

 


Bearer Token

Ein Bearer Token ist eine Art von Zugriffstoken, das zur Authentifizierung und Autorisierung in Webanwendungen und APIs verwendet wird. Der Begriff "Bearer" bedeutet „Inhaber“, was bedeutet, dass jeder, der dieses Token besitzt, Zugriff auf die geschützten Ressourcen hat – ohne zusätzliche Überprüfung.

Merkmale eines Bearer Tokens:

  • Selbsttragend: Enthält alle nötigen Informationen zur Authentifizierung.
  • Keine zusätzliche Identitätsprüfung: Wer das Token hat, kann es nutzen.
  • Wird in HTTP-Headern übertragen: Normalerweise als Authorization: Bearer <token>.
  • Oft zeitlich begrenzt: Hat eine Ablaufzeit, um Missbrauch zu reduzieren.
  • Wird häufig mit OAuth 2.0 verwendet: Zum Beispiel bei der Authentifizierung mit Drittanbieterdiensten.

Beispiel einer HTTP-Anfrage mit Bearer Token:

GET /geschuetzte-daten HTTP/1.1
Host: api.example.com
Authorization: Bearer abcdef123456

Risiken:

  • Kein Schutz bei Diebstahl: Wenn jemand das Token abfängt, kann er sich ausgeben.
  • Muss sicher gespeichert werden: Sollte nicht im Client-Code oder in URLs stehen.

💡 Tipp: Um die Sicherheit zu erhöhen, kann man Token mit kurzen Laufzeiten verwenden und sie nur über HTTPS übertragen.

 

 


Entity Header

Entity-Header sind HTTP-Header, die Informationen über den Hauptteil (Body) einer Nachricht enthalten. Sie können sowohl in Anfragen als auch in Antworten vorkommen und beschreiben Eigenschaften des Inhalts, wie Typ, Länge, Kodierung oder letzte Änderung.

Wichtige Entity-Header:

1. Content-Type

  • Gibt den Medientyp (MIME-Typ) des Inhalts an.
  • Beispiel:
Content-Type: application/json; charset=UTF-8

2. Content-Length

  • Gibt die Größe des Inhalts in Bytes an.
  • Beispiel:
Content-Length: 1024

3. Content-Encoding

  • Zeigt an, ob der Inhalt komprimiert wurde (z. B. gzip).
  • Beispiel:
Content-Encoding: gzip

4. Content-Language

  • Gibt die Sprache des Inhalts an.
  • Beispiel:
Content-Language: de-DE

5. Cache-Location

  • Zeigt die URL oder den Speicherort der eigentlichen Ressource an.
  • Beispiel:
Content-Location: /files/document.pdf

6. Last-Modified

  • Gibt an, wann der Inhalt zuletzt geändert wurde.
  • Beispiel:
Last-Modified: Tue, 30 Jan 2025 14:20:00 GMT

7. ETag

  • Eine eindeutige Kennung für eine Version der Ressource, nützlich für Caching.
  • Beispiel:
ETag: "abc123xyz"

8. Expires

  • Gibt an, wann der Inhalt als veraltet gilt.
  • Beispiel:
Expires: Fri, 02 Feb 2025 12:00:00 GMT

9. Allow

  • Listet die erlaubten HTTP-Methoden für eine Ressource auf.
  • Beispiel:
Allow: GET, POST, HEAD

10. Refresh (Nicht standardisiert, aber oft verwendet)

  • Weist den Browser an, die Seite nach einer bestimmten Zeit neu zu laden.
  • Beispiel:
Refresh: 10; url=https://example.com

Diese Header helfen dabei, den Inhalt einer HTTP-Nachricht genau zu beschreiben, Caching-Strategien zu optimieren und die korrekte Darstellung sicherzustellen.

 


Antwort Header

Antwort-Header (Response Headers) sind HTTP-Header, die vom Server an den Client gesendet werden. Sie enthalten Informationen über die Serverantwort, wie Statuscodes, Inhaltstypen, Sicherheitsrichtlinien oder Caching-Regeln.

Wichtige Antwort-Header:

1. Server

  • Zeigt an, welche Software oder Technologie der Server verwendet.
  • Beispiel:
Server: Apache/2.4.41 (Ubuntu)

2. Date

  • Gibt das Datum und die Uhrzeit der Serverantwort im GMT-Format an.
  • Beispiel:
Date: Wed, 31 Jan 2025 12:34:56 GMT

3. Content-Type

  • Gibt den Medientyp der Antwort an.
  • Beispiel:
Content-Type: text/html; charset=UTF-8

4. Content-Length

  • Gibt die Größe der Antwort in Bytes an.
  • Beispiel:
Content-Length: 3456

5. Cache-Control

  • Bestimmt das Caching-Verhalten der Antwort.
  • Beispiel:
Cache-Control: max-age=3600, must-revalidate

6. Set-Cookie

  • Sendet Cookies an den Client, um sie für spätere Anfragen zu speichern.
  • Beispiel:
Set-Cookie: sessionId=abc123; Path=/; Secure; HttpOnly

7. ETag

  • Eine eindeutige Kennung für eine bestimmte Version der Ressource, um Caching zu optimieren.
  • Beispiel:
ETag: "5d8c72a5f8d9f"

8. Location

  • Gibt eine Weiterleitungs-URL an, falls eine Ressource umgezogen ist.
  • Beispiel:
Location: https://www.new-url.com/

9. Access-Control-Allow-Origin

  • Ermöglicht Cross-Origin-Anfragen (CORS).
  • Beispiel:
Access-Control-Allow-Origin: *

10. Strict-Transport-Security (HSTS)

  • Erzwingt die Nutzung von HTTPS für zukünftige Anfragen.
  • Beispiel:
Strict-Transport-Security: max-age=31536000; includeSubDomains

Antwort-Header helfen dem Client, die empfangene Antwort richtig zu interpretieren, Sicherheitsmaßnahmen einzuhalten und Caching-Strategien zu nutzen.


HTTP Anfrage Header

Anfrage-Header (Request Headers) sind HTTP-Header, die ein Client (z. B. ein Webbrowser oder eine API-Anfrage) an den Server sendet, um zusätzliche Informationen über die Anfrage, den Client oder die gewünschten Inhalte bereitzustellen.

Wichtige Anfrage-Header:

1. Host

  • Gibt die Ziel-Domain oder IP-Adresse des Servers an.
  • Beispiel:
Host: www.example.com

2. User-Agent

  • Enthält Informationen über den Client, wie Browser-Typ oder Betriebssystem.
  • Beispiel:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)

3. Accept

  • Definiert, welche Inhaltstypen der Client akzeptieren kann.
  • Beispiel:
Accept: text/html, application/json

4. Accept-Language

  • Gibt die bevorzugte Sprache des Clients an.
  • Beispiel:
Accept-Language: de-DE, en-US

5. Accept-Encoding

  • Zeigt an, welche Kompressionsformate der Client unterstützt.
  • Beispiel:
Accept-Encoding: gzip, deflate, br

6. Referer

  • Gibt die vorherige Seite an, von der der Benutzer gekommen ist.
  • Beispiel:
Referer: https://www.google.com/

7. Authorization

  • Wird für die Authentifizierung bei geschützten Ressourcen verwendet.
  • Beispiel (Basic Auth):
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

8. Cookie

  • Enthält Cookies, die der Server zuvor gesetzt hat.
  • Beispiel:
Cookie: sessionId=abc123; theme=dark

9. Content-Type (bei POST/PUT-Anfragen)

  • Gibt das Datenformat des Anfrageinhalts an.
  • Beispiel:
Content-Type: application/json

10. Origin

  • Gibt die Ursprungs-URL an und wird oft bei Cross-Origin-Anfragen genutzt.
  • Beispiel:
Origin: https://www.example.com

Diese Header helfen dem Server, die Anfrage zu verstehen und entsprechend zu reagieren, indem sie Details über den Client, die bevorzugten Inhalte und Sicherheitsaspekte liefern.