Merge branch 'amar-patch-2'

This commit is contained in:
Konstantin Hintermayer 2025-02-17 09:48:56 +01:00
commit 2421559a37

View File

@ -153,21 +153,101 @@ Redundanzeigenschaften Bespr. Mit Hr. Prof. Gürth
## Zugriffsverwaltung
<table>
<tbody>
<tr><th>
<p><strong>Benutzername und Passwort Authentifizierung</strong></p>
<p>Frontend:</p>
<p>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.</p>
<p>Backend:</p>
<p>Ü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.</p>
</th>
<table><tbody>
<tr><td style="text-align: left"><p><strong><b>Benutzername und Passwort Authentifizierung</b></strong>
</p><p>
<b>Im Frontend</b>
</p><p>
<b>Beschreibung:</b>
</p><p>
Die Benutzername- und Passwort-Authentifizierung ermöglicht es Nutzern, sich in einer Anwendung zu identifizieren, indem sie ihre Anmeldedaten über ein Formular eingeben. Das Frontend sendet die Daten sicher an das Backend, das die Authentifizierung übernimmt. Bei erfolgreicher Anmeldung erhält der Nutzer Zugriff auf geschützte Bereiche der Anwendung.
</p><p>
<b>Voraussetzungen:</b>
</p><p>
1. Backend-Anforderungen:<br>
- Mechanismen zur Passwort-Validierung und Token-Generierung (z. B. JWT).<br>
- HTTPS für sichere Datenübertragung.</p><p>
2. Frontend-Anforderungen:<br>
- Möglichkeit zur Verarbeitung und sicheren Übertragung der Eingaben.<br>
- Mechanismus zur Speicherung von Authentifizierungsdaten (z. B. Tokens).<br>
<br>
Diese gelten für alle folgenden Punkte!
</p><p>
<b>Benötigte Komponenten:</b>
</p><p>
1. Login-Formular:<br>
- Eingabefelder für Benutzername und Passwort.<br>
- Submit-Button.<br>
- Fehleranzeige bei ungültigen Eingaben oder falschen Daten.</p><p>
2. HTTP-Client:<br>
- Zum Senden von Authentifizierungsanfragen an das Backend (RestAPI).</p><p>
3. Token-Management:<br>
- Speicherung von JWTs (z. B. im localStorage oder Cookies).</p><p>
4. Routing: <br>
- Weiterleitung zu geschützten Seiten nach erfolgreicher Anmeldung.
- Zugangsbeschränkung zu sensiblen Bereichen der App.
</p><p>
<b>Technologien:</b>
</p><p>
1. Framework:<br>
- C#, HTML</p><p>
2. HTTP-Anfragen:<br>
- RestAPI</p><p>
3. Sicherheitsmaßnahmen:<br>
- HTTPS</p><p>
4. Styling:<br>
- Eigenes CSS</p><p>
5. Token-Handling:<br>
- JWT</p><p>
6. Datenbank:<br>
- PostgresSQL
</p><p>
Backend:</p><p>Ü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.</p></th>
<th><p>ZUG-1</p></th></tr>
<tr><td><p><strong>Passwort zurücksetzen</strong></p>
<p>Frontend:</p>
<p>Das Zurücksetzen des Passworts im
<strong> Frontend </strong>
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.</p>
<tr><td style="text-align: left"><p><strong><b>Passwort zurücksetzen</b></strong>
</p><p>
<b>Im Frontend</b>
</p><p>
<b>Beschreibung:</b>
</p><p>
Die Passwort-Zurücksetzen-Funktion im Frontend ermöglicht es Benutzern, über eine Benutzeroberfläche einen Token-basierten Prozess zur Passwortänderung zu starten.
</p><p>
<b>Benötigte Komponenten:</b>
</p><p>
1. Eingabefeld für die E-Mail-Adresse.</p><p>
2. Formular zur Eingabe des neuen Passworts nach Token-Bestätigung.</p><p>
3. Fehler- und Erfolgsmeldungen zur Benutzerführung.
</p><p>
<b>Technologien:</b>
</p><p>
1. Framework:<br>
- C#, HTML</p><p>
2. HTTP-Anfragen:<br>
- RestAPI</p><p>
3. Sicherheitsmaßnahmen:<br>
- HTTPS</p><p>
4. Styling:<br>
- Eigenes CSS</p><p>
5. Token-Handling:<br>
- JWT</p><p>
6. Datenbank:<br>
- PostgresSQL
</p><p>
</p>
<p>Backend:</p>
<p>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.
@ -176,12 +256,46 @@ Benutzeroberfläche: Die Oberfläche für den Passwortreset muss benutzerfreundl
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.</p></td>
<td><p>ZUG-2</p></td></tr>
<tr><td><p><strong>Rollen</strong></p>
<p>Frontend:</p>
<p>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.</p>
<tr><td style="text-align: left"><p><strong><b>Rollen</b></strong>
</p><p>
<b>Im Frontend</b>
</p><p>
<b>Beschreibung:</b>
</p><p>
Die Implementierung von Rollen im Frontend dient der Steuerung von Benutzerzugriffen und Funktionen basierend auf deren Berechtigungen. Rollen legen fest, welche Inhalte und Aktionen für bestimmte Benutzergruppen sichtbar oder ausführbar sind.
</p><p>
<b>Benötigte Komponenten:</b>
</p><p>
1. Rollenbasierte Navigation </p><p>
2. Zugriffskontroll-Guard </p><p>
3. UI-Elemente basierend auf Benutzerrolle
</p><p>
<b>Technologien:</b>
</p><p>
1. Framework:<br>
- C#, HTML</p><p>
2. HTTP-Anfragen:<br>
- RestAPI</p><p>
3. Sicherheitsmaßnahmen:<br>
- HTTPS</p><p>
4. Styling:<br>
- Eigenes CSS</p><p>
5. Token-Handling:<br>
- JWT</p><p>
6. Datenbank:<br>
- PostgresSQL
</p><p>
<p>Backend:</p>
<p>DRollendefinition:
<p>Rollendefinition:
Definieren von Rollen (z.B. Administrator, Benutzer, Gast) mit spezifischen Berechtigungen.
Datenbankstruktur:
Entwurf einer Datenbanktabelle zur Speicherung von Rollen und deren Berechtigungen.
@ -193,10 +307,44 @@ 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.</p></td>
<td><p>ZUG-3</p></td></tr>
<tr><td><p><strong>Benutzerverwaltung (für Admins)</strong></p>
<p>Frontend:</p>
<p>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.</p>
<tr><td style="text-align: left"><p><strong><b>Benutzerverwaltung (für Admins)</b></strong>
</p><p>
<b>Im Frontend</b>
</p><p>
<b>Beschreibung:</b>
</p><p>
Die Benutzerverwaltung erlaubt Administratoren, Benutzerkonten zu verwalten, einschließlich Erstellung, Bearbeitung, Aktivierung/Deaktivierung und Löschung von Benutzern sowie Zuweisung von Rollen und Berechtigungen.
</p><p>
<b>Benötigte Komponenten:</b>
</p><p>
1. Liste der Benutzer mit Rollen und Status </p><p>
2. Buttons zum Bearbeiten und Löschen von Benutzern </p><p>
3. Such- und Filterfunktionen für Benutzer
</p><p>
<b>Technologien:</b>
</p><p>
1. Framework:<br>
- C#, HTML</p><p>
2. HTTP-Anfragen:<br>
- RestAPI</p><p>
3. Sicherheitsmaßnahmen:<br>
- HTTPS</p><p>
4. Styling:<br>
- Eigenes CSS</p><p>
5. Token-Handling:<br>
- JWT</p><p>
6. Datenbank:<br>
- PostgresSQL
</p><p>
<p>Backend:</p>
<p>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.
@ -213,9 +361,42 @@ Implementierung von Sicherheitsmaßnahmen wie Rate Limiting und IP-Whitelisting,
Fehlerbehandlung:
Bereitstellung von klaren Fehlermeldungen und Handhabung von unerwarteten Situationen, um die Integrität der Daten zu gewährleisten.</p></td>
<td><p>ZUG-4</p></td></tr>
<tr><td><p><strong>Einladung an die EDU-Adresse (Phase 2)</strong></p>
<p>Frontend:</p>
<p>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.</p>
<tr><td style="text-align: left"><p><strong><b>Einladung an die EDU-Adresse (Phase 2)</b></strong>
</p><p>
<b>Im Frontend</b>
</p><p>
<b>Beschreibung:</b>
</p><p>
In Phase 2 wird die Möglichkeit geschaffen, Benutzern eine Einladung zur Registrierung oder Teilnahme über eine EDU-E-Mail-Adresse zu senden. Diese Einladung erfolgt in Form einer E-Mail, die den Benutzer zur Anmeldung auf der Plattform einlädt.
</p><p>
<b>Benötigte Komponenten:</b>
</p><p>
1. Eingabefeld für die EDU-E-Mail-Adresse </p><p>
2. Button zum Versenden der Einladung </p><p>
3. Bestätigungs- und Fehlermeldungen für den Versand
</p><p>
<b>Technologien:</b>
</p><p>
1. Framework:<br>
- C#, HTML</p><p>
2. HTTP-Anfragen:<br>
- RestAPI</p><p>
3. Sicherheitsmaßnahmen:<br>
- HTTPS</p><p>
4. Styling:<br>
- Eigenes CSS</p><p>
5. Token-Handling:<br>
- JWT</p><p>
6. Datenbank:<br>
- PostgresSQL
</p><p>
<p>Backend:</p>
<p>Einladungserstellung:
Implementierung einer Funktion zur Erstellung einer Einladung, die alle erforderlichen Informationen (z.B. Empfänger, Betreff, Nachricht, Datum, Uhrzeit) erfasst.
@ -234,9 +415,41 @@ Protokollierung aller Einladungen, die erstellt und versendet wurden, um eine Na
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.</p></td>
<td><p>ZUG-5</p></td></tr>
<tr><td><p><strong>Magic Link Authentifizierung</strong></p>
<p>Frontend:</p>
<p>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.</p>
<tr><td style="text-align: left"><p><strong><b>Magic Link Authentifizierung</b></strong>
</p><p>
<b>Im Frontend</b>
</p><p>
<b>Beschreibung:</b>
</p><p>
Die Magic Link Authentifizierung ermöglicht es Benutzern, sich ohne Passwort anzumelden, indem sie auf einen Link klicken, der ihnen per E-Mail zugeschickt wird. Dieser Link ist temporär und führt den Benutzer direkt zur Anwendung, wenn er gültig ist.
</p><p>
<b>Benötigte Komponenten:</b>
</p><p>
1. Eingabefeld für die E-Mail-Adresse</p><p>
2. Button zum Anfordern des Magic Links</p><p>
3. Weiterleitung zur Bestätigungsseite nach Klick auf den Magic Link
</p><p>
<b>Technologien:</b>
</p><p>
1. Framework:<br>
- C#, HTML</p><p>
2. HTTP-Anfragen:<br>
- RestAPI</p><p>
3. Sicherheitsmaßnahmen:<br>
- HTTPS</p><p>
4. Styling:<br>
- Eigenes CSS</p><p>
5. Token-Handling:<br>
- JWT</p><p>
6. Datenbank:<br>
- PostgresSQL
</p><p>
<p>Backend:</p>
<p>Benutzerregistrierung::
Implementierung einer Funktion zur Registrierung potenzieller Benutzer, die ihre E-Mail-Adresse und andere erforderliche Informationen erfasst.
@ -254,14 +467,44 @@ 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.</p></td>
<td><p>ZUG-6</p></td></tr>
<tr><td><p><strong>2FA Authentifizierung (Phase 2)</strong></p>
<p>Frontend:</p>
<ul><li>Erste Anmeldung: Der Benutzer gibt seinen Benutzernamen und sein Passwort im Frontend ein.</li>
<li>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.</li>
<li>Code-Eingabe: Der Benutzer gibt den Code im Frontend ein.</li>
<li>Verifizierung: Das Frontend sendet den Code zur Verifizierung an das Backend.</li>
<li>Zugriff gewähren: Bei korrekter Codeeingabe erhält der Benutzer Zugriff auf die Anwendung.</li></ul>
<tr><td style="text-align: left"><p><strong><b>2FA Authentifizierung (Phase 2)</b></strong>
</p><p>
<b>Im Frontend</b>
</p><p>
<b>Beschreibung:</b>
</p><p>
In Phase 2 wird die Zwei-Faktor-Authentifizierung (2FA) implementiert, um die Sicherheit des Benutzerkontos zu erhöhen. Nach der Eingabe des Benutzernamens und Passworts wird ein zweiter Authentifizierungsfaktor benötigt, wie ein einmaliger Code, der an das Handy des Benutzers gesendet wird.
</p><p>
<b>Benötigte Komponenten:</b>
</p><p>
1. Eingabefeld für den OTP (One-Time-Password)</p><p>
2. Button zur Bestätigung des OTPs</p><p>
3. Fehler- und Erfolgsmeldungen für die OTP-Verifizierung
</p><p>
<b>Technologien:</b>
</p><p>
1. Framework:<br>
- C#, HTML</p><p>
2. HTTP-Anfragen:<br>
- RestAPI</p><p>
3. Sicherheitsmaßnahmen:<br>
- HTTPS</p><p>
4. Styling:<br>
- Eigenes CSS</p><p>
5. Token-Handling:<br>
- JWT</p><p>
6. Datenbank:<br>
- PostgresSQL
</p><p>
<p>Backend:</p>
<p>Anmeldedatenüberprüfung:
Nach der Eingabe der Anmeldedaten (Benutzername und Passwort) muss das System die Anmeldedaten validieren und überprüfen.
@ -279,17 +522,44 @@ 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.</p></td>
<td><p>ZUG-7</p></td></tr>
<tr><td><p><strong>OAuth (Phase 2)</strong></p>
<p>Frontend:</p>
<ul><li><strong>Anmeldelink</strong>
: Der Benutzer klickt auf einen Login-Button, und das Frontend leitet ihn zur OAuth-Provider-Seite (z. B. Google) weiter.</li>
<li><strong>Autorisierung</strong>
: Der Benutzer meldet sich an und erlaubt der Anwendung Zugriff auf bestimmte Daten.</li>
<li><strong>Token-Erhalt</strong>
: Der OAuth-Provider leitet den Benutzer zurück zur Anwendung mit einem Access Token in der URL.</li>
<li><strong>API-Zugriff</strong>
: Das Frontend speichert das Token (meist im Speicher des Browsers) und verwendet es, um direkt auf API-Ressourcen zuzugreifen.</li></ul>
<tr><td style="text-align: left"><p><strong><b>OAuth (Phase 2)</b></strong>
</p><p>
<b>Im Frontend</b>
</p><p>
<b>Beschreibung:</b>
</p><p>
In Phase 2 wird die OAuth-Authentifizierung implementiert, die es Benutzern ermöglicht, sich über Drittanbieter wie Google, Facebook oder andere Plattformen anzumelden. Dabei wird der Benutzer direkt zu einer externen OAuth-Plattform weitergeleitet, um sich zu authentifizieren, und anschließend wieder zurück zur Anwendung.
</p><p>
<b>Benötigte Komponenten:</b>
</p><p>
1. Button für die Auswahl des OAuth-Anbieters (z. B. Google, Facebook)</p><p>
2. Weiterleitung zur OAuth-Anmeldeseite des Anbieters</p><p>
3. Empfang und Verarbeitung des Tokens nach erfolgreicher Anmeldung
</p><p>
<b>Technologien:</b>
</p><p>
1. Framework:<br>
- C#, HTML</p><p>
2. HTTP-Anfragen:<br>
- RestAPI</p><p>
3. Sicherheitsmaßnahmen:<br>
- HTTPS</p><p>
4. Styling:<br>
- Eigenes CSS</p><p>
5. Token-Handling:<br>
- JWT</p><p>
6. Datenbank:<br>
- PostgresSQL
</p><p>
<p>Backend:</p>
<p>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.