From b72f41b1c518e684a0aa92f5ddfbbedc7e6737ce Mon Sep 17 00:00:00 2001 From: Julian Date: Sun, 19 Jan 2025 14:55:56 +0000 Subject: [PATCH] =?UTF-8?q?Zugriffs=20Authentifizierung=20(Backend)=20Hinz?= =?UTF-8?q?ugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Formatierung des Source Codes zur besseren Lesbarkeit (nur bei Zugriffs Authentifizierung) Bearbeitung bzw Fertiggestelt der Zugriffs Authentifizierung Backend Bereich --- pflichtenheft.md | 156 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 155 insertions(+), 1 deletion(-) diff --git a/pflichtenheft.md b/pflichtenheft.md index cabd9d6..2e3f4e2 100644 --- a/pflichtenheft.md +++ b/pflichtenheft.md @@ -138,7 +138,161 @@ Redundanzeigenschaften Bespr. Mit Hr. Prof. Gürth ## Zugriffsverwaltung -

Benutzername und Passwort Authentifizierung

Frontend:

Benutzername- und Passwort-Authentifizierung auf die Interaktion des Benutzers mit der Weboberfläche. Es geht darum, wie der Benutzer seine Anmeldeinformationen eingibt, wie diese Daten sicher an den Server übermittelt werden und wie der Benutzer nach erfolgreicher Authentifizierung auf die geschützten Teile der Anwendung zugreifen kann.

Backend:

Überprüft die empfangenen Anmeldedaten, in dem er nach vorhandenen Benutzernamen sucht. Anschließend wird das eingegebene Passwort mit den Daten in der Datenbank überprüft.

ZUG-1

Passwort zurücksetzen

Frontend:

Das Zurücksetzen des Passworts im Frontend einer Anwendung ermöglicht es den Benutzern, ihr Passwort zu ändern, falls sie es vergessen haben oder aus anderen Gründen ein neues Passwort festlegen möchten.

Backend:

Das neu festgelegte Passwort überschreibt den dazugehörigen Datenbankeintrag. Der Link zum Passwortreset, sofern man sich ganz aus der Applikation ausgesperrt hat, wird per E-Mail zugestellt.

ZUG-2

Rollen

Frontend:

Verwaltung von Benutzerrechten und Zugriffssteuerung innerhalb einer Webanwendung. In einer typischen Anwendung können Benutzer unterschiedliche Rollen haben, die bestimmte Berechtigungen definieren. Diese Rollen beeinflussen, welche Teile der Anwendung für den Benutzer sichtbar sind oder welche Aktionen er ausführen darf.

Backend:

Die Rollen erlauben es Benutzern verschiedene Berechtigungen zu erlangen. Hierfür muss im Backend ein Konzept zur Verteilung und Überprüfung von Rollen implementiert werden.

ZUG-3

Benutzerverwaltung (für Admins)

Frontend:

Die Benutzerverwaltung für Administratoren in einer Webanwendung bezieht sich auf die Funktionen, die es Administratoren ermöglichen, Benutzerkonten zu erstellen, zu bearbeiten, zu löschen und deren Berechtigungen zu verwalten.

Backend:

Alle Einträge, die in der Weboberfläche (Admin-Bereich) geändert werden, werden übers Backend in der DB gespeichert, hier muss man ganz Besonders auf die Rechteverteilung aufpassen, dass keine ungewollten Änderungen von dritten eingetragen werden.

ZUG-4

Einladung an die EDU-Adresse (Phase 2)

Frontend:

Im Frontend können Benutzer Einladungen an E-Mail-Adressen versenden, indem sie eine Adresse in ein Eingabefeld eingeben und auf „Einladen“ klicken. Die Anwendung überprüft die E-Mail-Adresse und sendet sie dann an das Backend, das eine Einladung generiert und per E-Mail verschickt.

Backend:

Es werden alle nötigen Schritte für die Erstellung einer Einladung durchgeführt, damit diese dann per E-Mail versendet werden kann.

ZUG-5

Magic Link Authentifizierung

Frontend:

Die Magic Link Authentifizierung ist eine Methode der Benutzeranmeldung, bei der anstelle eines Passworts ein einmaliger Login-Link an die E-Mail-Adresse des Benutzers gesendet wird. Wenn der Benutzer auf diesen Link klickt, wird er automatisch und sicher in die Anwendung eingeloggt.

Backend:

Ein potenzieller Benutzer bekommt per E-Mail einen Link zugesendet, womit er sich authentifizieren kann.

ZUG-6

2FA Authentifizierung (Phase 2)

Frontend:

  • Erste Anmeldung: Der Benutzer gibt seinen Benutzernamen und sein Passwort im Frontend ein.
  • 2FA-Code-Anforderung: Nach erfolgreicher Passworteingabe fordert die Anwendung einen zweiten Faktor an, z. B. einen 6-stelligen Code, der per SMS, E-Mail oder einer Authenticator-App (z. B. Google Authenticator) generiert wird.
  • Code-Eingabe: Der Benutzer gibt den Code im Frontend ein.
  • Verifizierung: Das Frontend sendet den Code zur Verifizierung an das Backend.
  • Zugriff gewähren: Bei korrekter Codeeingabe erhält der Benutzer Zugriff auf die Anwendung.

Backend:

Nach erfolgreicher Eingabe der Anmeldedaten wird über eine andere Kommunikationsoberfläche ein Code übermittelt auf einem anderen Gerät generiert, der wiederum eingegeben werden muss, um seine Identität zu bestätigen.

ZUG-7

OAuth (Phase 2)

Frontend:

  • Anmeldelink: Der Benutzer klickt auf einen Login-Button, und das Frontend leitet ihn zur OAuth-Provider-Seite (z. B. Google) weiter.
  • Autorisierung: Der Benutzer meldet sich an und erlaubt der Anwendung Zugriff auf bestimmte Daten.
  • Token-Erhalt: Der OAuth-Provider leitet den Benutzer zurück zur Anwendung mit einem Access Token in der URL.
  • API-Zugriff: Das Frontend speichert das Token (meist im Speicher des Browsers) und verwendet es, um direkt auf API-Ressourcen zuzugreifen.

Backend:

Authentifizierung mittels LinkedIn Account. Hierfür muss im Backend ein Mapping geführt werden, welcher LinkedIn Account, zu welchem von unseren Accounts gehört. In einer weiteren Ausbaustufe kann man vielleicht gleich das ganze Profil von LinkedIn mit dem eigenen Abgleichen.

ZUG-8

+ + + + + + + + + + + + + + + + + +
+

Benutzername und Passwort Authentifizierung

+

Frontend:

+

Benutzername- und Passwort-Authentifizierung auf die Interaktion des Benutzers mit der Weboberfläche. Es geht darum, wie der Benutzer seine Anmeldeinformationen eingibt, wie diese Daten sicher an den Server übermittelt werden und wie der Benutzer nach erfolgreicher Authentifizierung auf die geschützten Teile der Anwendung zugreifen kann.

+

Backend:

+

Überprüft die empfangenen Anmeldedaten, in dem er nach vorhandenen Benutzernamen sucht. Anschließend wird das eingegebene Passwort mit den Daten in der Datenbank überprüft.

+

ZUG-1

Passwort zurücksetzen

+

Frontend:

+

Das Zurücksetzen des Passworts im + Frontend +einer Anwendung ermöglicht es den Benutzern, ihr Passwort zu ändern, falls sie es vergessen haben oder aus anderen Gründen ein neues Passwort festlegen möchten.

+

Backend:

+

Passwortreset-Funktion: Benutzer können ihre E-Mail-Adresse eingeben, um einen Passwortreset anzufordern. +E-Mail-Versand: Die Anwendung sendet einen Link mit einem einmaligen, zeitlich begrenzten Token an die angegebene E-Mail-Adresse. +Sicherheitsanforderungen: Der Token muss sicher generiert werden, und der Link darf keine sensiblen Informationen enthalten. +Benutzeroberfläche: Die Oberfläche für den Passwortreset muss benutzerfreundlich sein und eine Bestätigung anzeigen. +Datenbankoperationen: Der neue Passwort-Hash wird in der Datenbank gespeichert und überschreibt den alten Eintrag. +Fehlerbehandlung: Geeignete Fehlermeldungen müssen angezeigt werden, wenn die E-Mail nicht registriert ist oder der Token abgelaufen ist. +Protokollierung: Alle Passwortreset-Anfragen müssen protokolliert werden.

ZUG-2

Rollen

+

Frontend:

+

Verwaltung von Benutzerrechten und Zugriffssteuerung innerhalb einer Webanwendung. In einer typischen Anwendung können Benutzer unterschiedliche Rollen haben, die bestimmte Berechtigungen definieren. Diese Rollen beeinflussen, welche Teile der Anwendung für den Benutzer sichtbar sind oder welche Aktionen er ausführen darf.

+

Backend:

+

DRollendefinition: +Definieren von Rollen (z.B. Administrator, Benutzer, Gast) mit spezifischen Berechtigungen. +Datenbankstruktur: +Entwurf einer Datenbanktabelle zur Speicherung von Rollen und deren Berechtigungen. +Rollenvergabe: +Implementierung von Funktionen zur Zuweisung und Entziehung von Rollen an Benutzer im Backend. +Berechtigungsprüfung: +Entwicklung einer Middleware oder Funktion, die bei jeder Anfrage überprüft, ob der Benutzer die erforderlichen Berechtigungen für die angeforderte Aktion hat. +Sicherheitsanforderungen: +Sicherstellen, dass nur autorisierte Benutzer (z.B. Administratoren) Rollen ändern oder zuweisen können. +Protokollierung: +Implementierung von Protokollierungsmechanismen für Änderungen an Rollen und Berechtigungen zur Nachverfolgbarkeit.

ZUG-3

Benutzerverwaltung (für Admins)

+

Frontend:

+

Die Benutzerverwaltung für Administratoren in einer Webanwendung bezieht sich auf die Funktionen, die es Administratoren ermöglichen, Benutzerkonten zu erstellen, zu bearbeiten, zu löschen und deren Berechtigungen zu verwalten.

+

Backend:

+

Datenbankoperationen: +Alle Änderungen, die über die Weboberfläche im Admin-Bereich vorgenommen werden, müssen über definierte Backend-API-Endpunkte in der Datenbank gespeichert werden. +Zugriffssteuerung: +Implementierung einer strengen Zugriffssteuerung, die sicherstellt, dass nur autorisierte Benutzer (z.B. Administratoren) Änderungen vornehmen können. +Berechtigungsprüfung: +Vor jeder Datenbankoperation muss eine Überprüfung der Benutzerrollen und -berechtigungen erfolgen, um sicherzustellen, dass der Benutzer die erforderlichen Rechte hat. +Validierung der Eingaben: +Alle Eingaben, die über die Weboberfläche an das Backend gesendet werden, müssen validiert werden, um sicherzustellen, dass sie den erwarteten Formaten und Werten entsprechen. +Protokollierung von Änderungen: +Alle Änderungen, die im Admin-Bereich vorgenommen werden, müssen protokolliert werden, um eine Nachverfolgbarkeit und Auditierung zu ermöglichen. +Sicherheitsmaßnahmen: +Implementierung von Sicherheitsmaßnahmen wie Rate Limiting und IP-Whitelisting, um unbefugte Zugriffe zu verhindern. +Fehlerbehandlung: +Bereitstellung von klaren Fehlermeldungen und Handhabung von unerwarteten Situationen, um die Integrität der Daten zu gewährleisten.

ZUG-4

Einladung an die EDU-Adresse (Phase 2)

+

Frontend:

+

Im Frontend können Benutzer Einladungen an E-Mail-Adressen versenden, indem sie eine Adresse in ein Eingabefeld eingeben und auf „Einladen“ klicken. Die Anwendung überprüft die E-Mail-Adresse und sendet sie dann an das Backend, das eine Einladung generiert und per E-Mail verschickt.

+

Backend:

+

Einladungserstellung: +Implementierung einer Funktion zur Erstellung einer Einladung, die alle erforderlichen Informationen (z.B. Empfänger, Betreff, Nachricht, Datum, Uhrzeit) erfasst. +Datenbankintegration: +Speichern der Einladung in der Datenbank, einschließlich aller relevanten Details und des Status (z.B. erstellt, versendet). +E-Mail-Vorlage: +Erstellung einer E-Mail-Vorlage, die die Einladung in einem ansprechenden Format darstellt. +E-Mail-Versand: +Implementierung einer Funktion, die die Einladung per E-Mail an den vorgesehenen Empfänger sendet, einschließlich der Verwendung eines E-Mail-Dienstes (z.B. SMTP-Server). +Berechtigungsprüfung: +Sicherstellen, dass nur autorisierte Benutzer (z.B. Administratoren) Einladungen erstellen und versenden können. +Fehlerbehandlung: +Implementierung von Mechanismen zur Fehlerbehandlung, um sicherzustellen, dass der Benutzer über den Erfolg oder das Scheitern des E-Mail-Versands informiert wird. +Protokollierung: +Protokollierung aller Einladungen, die erstellt und versendet wurden, um eine Nachverfolgbarkeit zu gewährleisten. +Eingabever validation: +Validierung der Eingaben (z.B. E-Mail-Adresse, Datum) vor der Erstellung und dem Versand der Einladung, um sicherzustellen, dass sie korrekt sind.

ZUG-5

Magic Link Authentifizierung

+

Frontend:

+

Die Magic Link Authentifizierung ist eine Methode der Benutzeranmeldung, bei der anstelle eines Passworts ein einmaliger Login-Link an die E-Mail-Adresse des Benutzers gesendet wird. Wenn der Benutzer auf diesen Link klickt, wird er automatisch und sicher in die Anwendung eingeloggt.

+

Backend:

+

Benutzerregistrierung: +Implementierung einer Funktion zur Registrierung potenzieller Benutzer, die ihre E-Mail-Adresse und andere erforderliche Informationen erfasst. +E-Mail-Versand: +Nach der Registrierung muss eine E-Mail an die angegebene Adresse gesendet werden, die einen Authentifizierungslink enthält. +Link-Generierung: +Der Authentifizierungslink muss einen einmaligen, kryptografisch sicheren Token enthalten, der mit dem Benutzerkonto verknüpft ist und eine begrenzte Gültigkeitsdauer hat (z.B. 24 Stunden). +Datenbankeintrag: +Der Token und der Status der Authentifizierung müssen in der Datenbank gespeichert werden, um die Gültigkeit des Links zu überprüfen. +Link-Verifizierung: +Implementierung einer Funktion, die den Token überprüft, wenn der Benutzer auf den Link klickt, um sicherzustellen, dass er gültig und nicht abgelaufen ist. +Benutzeraktivierung: +Nach erfolgreicher Verifizierung des Tokens muss das Benutzerkonto aktiviert werden, und der Benutzer sollte auf eine Bestätigungsseite weitergeleitet werden. +Fehlerbehandlung: +Bereitstellung von klaren Fehlermeldungen, wenn der Token ungültig oder abgelaufen ist, und gegebenenfalls die Möglichkeit zur erneuten Anforderung des Authentifizierungslinks. +Protokollierung: +Protokollierung aller Authentifizierungsanfragen und -versuche, um eine Nachverfolgbarkeit zu gewährleisten.

ZUG-6

2FA Authentifizierung (Phase 2)

+

Frontend:

+
  • Erste Anmeldung: Der Benutzer gibt seinen Benutzernamen und sein Passwort im Frontend ein.
  • +
  • 2FA-Code-Anforderung: Nach erfolgreicher Passworteingabe fordert die Anwendung einen zweiten Faktor an, z. B. einen 6-stelligen Code, der per SMS, E-Mail oder einer Authenticator-App (z. B. Google Authenticator) generiert wird.
  • +
  • Code-Eingabe: Der Benutzer gibt den Code im Frontend ein.
  • +
  • Verifizierung: Das Frontend sendet den Code zur Verifizierung an das Backend.
  • +
  • Zugriff gewähren: Bei korrekter Codeeingabe erhält der Benutzer Zugriff auf die Anwendung.
+

Backend:

+

Anmeldedatenüberprüfung: +Nach der Eingabe der Anmeldedaten (Benutzername und Passwort) muss das System die Anmeldedaten validieren und überprüfen. +Code-Generierung: +Implementierung einer Funktion zur Generierung eines zeitlich begrenzten Codes (z.B. TOTP - Time-based One-Time Password), der auf einem anderen Gerät (z.B. Smartphone) generiert wird. +Code-Übermittlung: +Der generierte Code muss über eine sichere Kommunikationsoberfläche (z.B. Push-Benachrichtigung, SMS oder E-Mail) an den Benutzer gesendet werden. +Benutzereingabe: +Der Benutzer muss die Möglichkeit haben, den erhaltenen Code in die Anmeldemaske einzugeben, um seine Identität zu bestätigen. +Code-Überprüfung: +Implementierung einer Funktion zur Überprüfung des eingegebenen Codes gegen den generierten Code, um sicherzustellen, dass er korrekt und innerhalb der Gültigkeitsdauer ist. +Fehlerbehandlung: +Bereitstellung von klaren Fehlermeldungen, wenn der eingegebene Code ungültig oder abgelaufen ist, sowie die Möglichkeit, einen neuen Code anzufordern. +Sicherheitsanforderungen: +Sicherstellen, dass die Kommunikation zwischen dem Server und dem Gerät des Benutzers sicher ist (z.B. durch Verschlüsselung). +Protokollierung: +Protokollierung aller Anmeldeversuche und der Verwendung von Codes zur Nachverfolgbarkeit und zur Erkennung von potenziellen Sicherheitsvorfällen.

ZUG-7

OAuth (Phase 2)

+

Frontend:

+
  • Anmeldelink +: Der Benutzer klickt auf einen Login-Button, und das Frontend leitet ihn zur OAuth-Provider-Seite (z. B. Google) weiter.
  • +
  • Autorisierung +: Der Benutzer meldet sich an und erlaubt der Anwendung Zugriff auf bestimmte Daten.
  • +
  • Token-Erhalt +: Der OAuth-Provider leitet den Benutzer zurück zur Anwendung mit einem Access Token in der URL.
  • +
  • API-Zugriff +: Das Frontend speichert das Token (meist im Speicher des Browsers) und verwendet es, um direkt auf API-Ressourcen zuzugreifen.
+

Backend:

+

OAuth 2.0 Integration: +Implementierung des OAuth 2.0-Protokolls zur Authentifizierung über LinkedIn. Dies umfasst die Registrierung der Anwendung bei LinkedIn und den Erhalt der erforderlichen Client-ID und Client-Secret. +Benutzeranmeldung: +Bereitstellung eines Endpunkts, über den Benutzer sich mit ihrem LinkedIn-Account anmelden können. Dies sollte einen Redirect zur LinkedIn-Login-Seite und die anschließende Rückleitung zur eigenen Anwendung nach erfolgreicher Authentifizierung umfassen. +Token-Verwaltung: +Nach erfolgreicher Authentifizierung muss das Backend den von LinkedIn erhaltenen Access-Token speichern, um zukünftige Anfragen an die LinkedIn-API zu ermöglichen. +Mapping von LinkedIn-Accounts: +Implementierung einer Datenbanktabelle, die das Mapping zwischen LinkedIn-Accounts (z.B. LinkedIn-ID) und den internen Benutzerkonten in der eigenen Anwendung speichert. +Profilabgleich (Zukünftige Ausbaustufe): +In einer späteren Phase sollte eine Funktion implementiert werden, die es ermöglicht, das LinkedIn-Profil des Benutzers abzurufen und mit dem eigenen Benutzerprofil abzugleichen. Dies könnte Informationen wie Name, E-Mail-Adresse, Berufserfahrung und Fähigkeiten umfassen. +Sicherheitsanforderungen: +Sicherstellen, dass alle Daten, die von LinkedIn abgerufen werden, sicher gespeichert und verarbeitet werden, um die Privatsphäre der Benutzer zu schützen. +Fehlerbehandlung: +Implementierung von Mechanismen zur Fehlerbehandlung, um mit möglichen Problemen bei der Authentifizierung oder beim Abrufen von Daten von LinkedIn umzugehen. +Protokollierung: +Protokollierung aller Authentifizierungsversuche und der zugehörigen LinkedIn-Daten, um eine Nachverfolgbarkeit und Analyse von Anmeldeaktivitäten zu ermöglichen.

ZUG-8

## Hall of Fame (Phase 2)