... | @@ -2,10 +2,136 @@ |
... | @@ -2,10 +2,136 @@ |
|
|
|
|
|
**Autor: Phillip Heitbaum**
|
|
**Autor: Phillip Heitbaum**
|
|
|
|
|
|
...
|
|
## HTTP Basic Authentifizierung
|
|
|
|
|
|
|
|
**Beschreibung**
|
|
|
|
|
|
|
|
Die HTTP Basic Authentifizierung ist eine einfache Methode, um Benutzern den Zugriff auf geschützte Ressourcen zu ermöglichen. Dabei wird der Benutzername und das Passwort in jedem HTTP-Request als Base64-kodierte Zeichenkette im Authorization-Header übertragen.
|
|
|
|
|
|
|
|
**Beispiel einer Base64-kodierten Zeichenkette:**
|
|
|
|
|
|
|
|
Angenommen, der Benutzername ist "admin" und das Passwort "geheim123". Die Base64-kodierte Zeichenkette würde dann wie folgt aussehen: YWRtaW46Z2VvaW0xMjM=. Diese Zeichenkette wird dann im Authorization-Header folgendermaßen übertragen: Authorization: Basic YWRtaW46Z2VvaW0xMjM=.
|
|
|
|
|
|
|
|
|
|
|
|
**Implementierung (Beispiel in Node.js mit Express)**
|
|
|
|
|
|
|
|
[Beispielcode Express](Aspose.Words.e756e523-93c3-4c6c-90db-61c782c7d795.001.png)
|
|
|
|
|
|
|
|
|
|
|
|
**Vor- und Nachteile**
|
|
|
|
|
|
|
|
- **Vorteile:** Einfach zu implementieren
|
|
|
|
- **Nachteile:**
|
|
|
|
- **Unsicher:** Passwort wird unverschlüsselt übertragen, leicht abfangbar.
|
|
|
|
- **Keine Skalierbarkeit:** Für komplexe Zugriffsszenarien ungeeignet.
|
|
|
|
- **Kein Single Sign-On:** Benutzer müssen sich für jede Anwendung separat anmelden.
|
|
|
|
|
|
|
|
|
|
|
|
## Salting und Hashing
|
|
|
|
|
|
|
|
**Beschreibung**
|
|
|
|
|
|
|
|
Salting und Hashing sind zwei wichtige Techniken, um Passwörter sicher zu speichern. Dabei wird das Passwort nicht unverändert gespeichert, sondern in einen sogenannten Hash umgewandelt. Dieser Hash ist eine einwegig berechnete Zeichenfolge, die aus dem ursprünglichen Passwort und einem zufälligen Wert, dem sogenannten Salt, erzeugt wird.
|
|
|
|
|
|
|
|
- Salt: Ein zufälliger Wert, der jedem Passwort individuell zugeordnet wird. Er dient dazu, die Sicherheit des Hash-Werts zu erhöhen, da derselbe Passwort-Hash mit unterschiedlichen Salts immer unterschiedliche Ergebnisse liefert.
|
|
|
|
- Hash: Eine feste Zeichenfolge, die aus einem beliebig langen Eingabewert (in unserem Fall dem Passwort und dem Salt) berechnet wird. Es ist praktisch unmöglich, aus einem Hash das ursprüngliche Passwort zurückzurechnen.
|
|
|
|
|
|
|
|
**Ablauf:**
|
|
|
|
|
|
|
|
1. Beim Registrieren:
|
|
|
|
- Ein zufälliger Salt wird erzeugt.
|
|
|
|
- Das Passwort wird mit dem Salt kombiniert und gehasht.
|
|
|
|
- Der Hash wird zusammen mit dem Salt in der Datenbank gespeichert. Das ursprüngliche Passwort wird nicht gespeichert.
|
|
|
|
1. Beim Anmelden:
|
|
|
|
- Das eingegebene Passwort wird mit dem gespeicherten Salt kombiniert und gehasht.
|
|
|
|
- Der berechnete Hash wird mit dem gespeicherten Hash verglichen.
|
|
|
|
- Stimmen die Hashes überein, ist die Authentifizierung erfolgreich.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Implementierung in JavaScript mit bcrypt.js**
|
|
|
|
|
|
|
|
[Beispielcode bcrypt.js](Aspose.Words.e756e523-93c3-4c6c-90db-61c782c7d795.002.png)
|
|
|
|
|
|
|
|
**Vor- und Nachteile**
|
|
|
|
|
|
|
|
- **Vorteile:**
|
|
|
|
- **Sicher:** Schützt Passwörter vor Brute-Force-Angriffen.
|
|
|
|
- **Flexibel:** Kann mit verschiedenen Hash-Algorithmen und Salt-Längen kombiniert werden
|
|
|
|
- **Nachteile:**
|
|
|
|
- **Komplexer:** Erfordert mehr Implementierungsaufwand als einfache Methoden.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Keycloak
|
|
|
|
|
|
|
|
**Beschreibung**
|
|
|
|
|
|
|
|
Keycloak ist eine Open-Source-Identitäts- und Zugriffsmanagement-Lösung. Es bietet eine zentrale Plattform für die Verwaltung von Benutzern, Gruppen, Rollen und Berechtigungen. Keycloak unterstützt verschiedene Authentifizierungsmethoden (Passwort, Social Login, SAML, OAuth 2.0) und bietet Funktionen wie Single Sign-On und Identity Federation.
|
|
|
|
|
|
|
|
**Implementierung**
|
|
|
|
|
|
|
|
Die Integration von Keycloak in eine Anwendung erfolgt in der Regel in folgenden Schritten:
|
|
|
|
|
|
|
|
1. Installation und Konfiguration des Keycloak-Servers:
|
|
|
|
- Keycloak kann als Docker-Container, auf einem Anwendungsserver oder in der Cloud betrieben werden.
|
|
|
|
- Es müssen Realms, Clients, Benutzer und Rollen konfiguriert werden.
|
|
|
|
1. Anpassung der Anwendung:
|
|
|
|
- Integration des Keycloak-SDKs in die Anwendung.
|
|
|
|
- Implementierung der Authentifizierung und Autorisierungsprozesse.
|
|
|
|
- Verwendung von Keycloak-Token zur Überprüfung der Benutzeridentität.
|
|
|
|
|
|
|
|
Keycloak bietet SDKs für verschiedene Programmiersprachen und Frameworks, wie Java, JavaScript, Python und .NET, um die Integration zu vereinfachen.
|
|
|
|
|
|
|
|
**Vor- und Nachteile**
|
|
|
|
|
|
|
|
**Vorteile:**
|
|
|
|
|
|
|
|
- **Umfassend:** Bietet eine breite Palette von Funktionen für die Identitätsverwaltung.
|
|
|
|
- **Flexibel:** Kann an verschiedene Anwendungsfälle und Unternehmensanforderungen angepasst werden.
|
|
|
|
- **Skalierbar:** Geeignet für kleine bis sehr große Anwendungen.
|
|
|
|
- **Open Source:** Kostenlos nutzbar und anpassbar.
|
|
|
|
- **Aktive Community:** Große Community und umfangreiche Dokumentation.
|
|
|
|
|
|
|
|
**Nachteile:**
|
|
|
|
|
|
|
|
- **Komplexität:** Die Konfiguration und Verwaltung von Keycloak kann für Einsteiger komplex sein.
|
|
|
|
- **Lernkurve:** Es erfordert eine gewisse Einarbeitung, um Keycloak effektiv zu nutzen.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Fazit
|
|
|
|
|
|
|
|
- **HTTP Basic Authentifizierung:** Einfach zu implementieren, aber unsicher und für einfache Anwendungen geeignet.
|
|
|
|
- **Salting & Hashing:** Wichtige Sicherheitsmaßnahme für die Speicherung von Passwörtern. Erfordert Passwort Datenbank.
|
|
|
|
- **Keycloak:** Umfassende Lösung für die Identitätsverwaltung, ideal für komplexe Anwendungen und hohe Sicherheitsanforderungen.
|
|
|
|
|
|
|
|
**Empfehlung**
|
|
|
|
|
|
|
|
Für moderne Webanwendungen ist Keycloak die beste Wahl, wenn es um Sicherheit, Flexibilität und Skalierbarkeit geht. HTTP Basic Authentifizierung sollte aufgrund der Sicherheitsrisiken vermieden werden.
|
|
|
|
|
|
|
|
|
|
|
|
## Weiterführende Links
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**HTTP Basic Authentifizierung**
|
|
|
|
|
|
|
|
- **Node.js (Express):** Die offizielle Dokumentation von Express-Basic-Auth bietet detaillierte Informationen zur Konfiguration und Verwendung: <https://www.npmjs.com/package/express-basic-auth>
|
|
|
|
|
|
|
|
**Salting und Hashing**
|
|
|
|
|
|
|
|
- **bcrypt:** Die bcrypt-Dokumentation bietet detaillierte Informationen zu verschiedenen Optionen und Funktionen: https://github.com/dcodeIO/bcrypt.js/blob/master/README.md
|
|
|
|
|
|
|
|
**Keycloak**
|
|
|
|
|
|
|
|
- **Offizielle Dokumentation:** Die offizielle Dokumentation von Keycloak ist sehr umfangreich und bietet Tutorials, Beispiele und eine API-Referenz: <https://www.keycloak.org/docs/latest/>
|
|
|
|
|
|
...
|
|
|
|
|
|
|
|
...
|
|
|
|
|
|
|
|
[(Zurück zum Inhalt des Endberichts)](https://gitlab-ce.hs-bochum.de/fachbereich-geodaesie/gi-projekte/web3dscans/-/wikis/Endbericht) |
|
[(Zurück zum Inhalt des Endberichts)](https://gitlab-ce.hs-bochum.de/fachbereich-geodaesie/gi-projekte/web3dscans/-/wikis/Endbericht) |