Nur einmal anmelden.
Die restlichen Logins funktionieren voll-automatisch und sind sicher?
Mit Single-Sign-On ist das möglich.
Wie Single-Sign-On funktioniert und wie Du eine solche Software-Architektur bauen kannst, möchte ich Dir heute erklären.
oAuth – Open Source Single-Sign-On Tipp
oAuth (Open Authorization) vereinfacht die Anmeldung von Nutzern an API, Desktop-Anwendungen, im Web und auf mobilen Endgeräte.
oAuth ist eine weitere Anmeldemöglichkeit für den Endnutzer, die Single-Sign-On implementiert hat. Der Nutzer meldet sich bei z. B. Google an und kann mit dieser Identität sich schnell und einfach bei anderen Webseiten registrieren oder anmelden. Das Open Autorisation-Verfahren beschreibt der RFC 6749 und RFC 6750 ausführlich.
Der Endnutzer (Client) erhält durch oAuth einen zeitlich begrenzen Zugang auf einen Ressource Server (Dienst, Datenbank).
Vorteile von Implementierung von oAuth – Single-Sign-On
Plus #1: Schneller Login / schnelles Registrieren
Der Nutzer braucht nur zweimal zu Klicken. Beim ersten Mal wählt er den Authentifizierungs-Server aus. Beim zweiten Mal bestätigt der Nutzer, dass der Authentifizierungs-Server Nutzerdaten wie Name und Geburtstag weitergeben darf.
Plus #2: Keine Weitergabe von Anmeldedaten
Die Webseite, die Single Sign On verwenden braucht keine Passwörter, sondern nur einen Token (Einmal-Passwort), was dem Endnutzer erlaubt sich auf der Webseite anzumelden.
Plus #3: Schlechte Passwörter vermeiden
Ein Nutzer mit Single Sign On braucht sich nicht bei jeder neuen Registrierung ein neues Passwort auszudenken.
Plus #4: Kein Risiko durch Passwort-Databreach
Wenn die Passwort-Datenbank Deiner Lieblingswebsite kompromittiert ist, dann sehen die Hacker nur ein kryptisches Passwort, welches das Single Sign On nie wiederverwenden wirst.
Plus #5: Kombinierbar mit 2-Faktor Authentifizierung
Google und andere moderne Unternehmen stellen Ihren Nutzer 2-Faktor-Authentifizierung zur Verfügung. Mit einem USB-Schlüssel oder dem Fingerabdruck steigt die Barriere für die Hacker.
Das „Rollenspiel“ in oAuth – Funktion von Single-Sign-On
Seit 2013 stellt die Open-Source-Community eine neuere Version von oAuth vor: OpenID Connect (oAuth 2.0)
Sobald sicher der Client (Nutzer) sich bei dem Authentifizierungs-Server angemeldet hat, erstellt dieser einen Token für die Anmeldung bei dem Ressourcen-Server.
Der Ressource Owner erlauben den Zugriff durch die Clients auf den Server, wenn der Client den Access-Token vorweisen kann. Dieser hat ein Ablaufdatum.
oAuth nutzt folgende zwei Token:
- Den Access-Token nutzt der Client, um sich bei dem Ressourcen-Server anzumelden
- Den Refresh-Token verwendet der Client, um einen neuen Access-Token bei dem Authentifizierungs-Server zu bekommen
Sicher Daten über die Leitung: JSON Web Token
Der JSON-Web-Token (JWT) übertragt kompakt und sicher Informationen zwischen zwei Computern. Diese Nachricht ist digital signiert. Mit einer Signatur ist der Sender eindeutig identifizierbar und ein Dritter konnte der Inhalt nicht ändern. Für eine digitale Signatur nutzen die Computer RSA rückwärts angewandt.
Der JSON-Web-Token nutzt den HMAC-Algorithmus in Verbindung mit einem Publik-Key-Verfahren (RSA)
Der Kopf des gesendeten Informationspakets enthält verwendeten Namen des Algorithmus und die Token-Art. Nach dem Kopf folgt der Inhalt und die Signatur, ein Hash-Wert.
Praxis mit Microservice: Kubernetes deployt Front- und Backend
Lavarvel-Framework PHP (Backend)
Für das Backend wähle ich eine PHP-Framework: Das Laravel Framework kann jeder frei seit 2011 verwenden.
Was ist + kann Laravel?
Dieses arbeitet mit einem Modell-View-Controller. Zu Laravel gehört die CLI php artisan, die viele Standard-Aufgaben automatisiert hat.
Das Erstellen von Logins, Tabellen und Controllern geht voll-automatisch. Wie viele PHP-Frameworks braucht Laravel auf Composer auf. Dieser ist ein modulares PHP-Paket-System wie in Node.js. Dort sind Erweiterungen und Bibliotheken für die PHP-Anwendung verfügbar.
Laravel ermöglicht eine simple Verbindung zwischen der MySQL-Datenbank und dem Backend. Ein gutes Werkzeug für das Frontend ist die Blade Template Engine. Diese generiert schnell und einfach PHP-HTML-Webseiten ohne lästigen PHP-Code. Mit Laravel kommt eine Möglichkeit für einen Unit-Test.
Nutzen von Laravel php artisan +Passport-Erweiterung
Eine Erweiterung, die jeder mit Composer nach installieren kann ist, Passport. Diese ist eine funktionierende Implementation von oAuth. Mit wenig eigenem Code und viel fertigen Code kannst Du oAuth in eine Laravel-Anwendung implementieren.
Laravel möchte mit php aritsan die Standardaufgaben vereinheitlichen. Das bringt eine höhere Sicherheit durch Sicherheits-Fehler bei falscher Konfiguration von oAuth. Laravel ist ein sehr mächtiges Framework mit einigen Funktionen.
Zur Gewöhnung empfehle ich erst einfach Aufgabe nach Tutorial abzuarbeiten, bevor Du Dich schwierigere bewältigen möchtest.
JavaScript – Single App Application in Vue (Fortend)
Vue.js stellt Dir in eine JavaScript Framework Single-App-Application zur Verfügung. Single App Applications basieren auf 1 HTML-Grundgerüst, in dem JavaScript-Code die Inhalte steuert. Der Programmiere schreibt die Vue-Anwendung in TypeScript. Eine Vue-Komponente teilt sich in das Template (HTML), den Code (TypeScript) und die Styles (sCSS) ein. Vue agiert mit Model-Events und Binding.
In diesem Fall soll Vue eine Anmelde-Maske für die Anmelde-Informationen zu Verfügung stellen.
Vue mit Larvel kombinieren
Mein Ziel ist es eine Verbindung zwischen einem Laravel-Backend und Vue-Frontend zu erstellen. Die beiden Module sollen in Kubernetes-Containern laufen. Vue-Frontend sendet ein JSON mit den Credentials über einen verschlüsselten Kanal (HTTPs) und erhält von Laravel einen Token zurück.
Was sind Kubernetes?
Die Kubernetes-Software vereinfacht die Verwaltung von Docker-Container.
Ein Docker-Script beschreibt einen Docker-Container (abgespeckte virtuelle Maschine). Das Skript beschreibt die Architektur, Leistungsfähigkeit und Software-Umgebung der virtuellen Maschine.
Kubernetes schafft eine simple Möglichkeit eine stabile Microservices Architektur mit Replikationen zu betreiben. Diese ist (wenn man es korrekt macht) resilient gegen Fehler, flexibel, skaliert sehr einfach, resilient gegen Teilsystem-Ausfälle und leichter + schneller implementierbar.