julian-patch-1 #31
|
@ -138,7 +138,7 @@ Redundanzeigenschaften Bespr. Mit Hr. Prof. Gürth
|
|||
| Anforderung | ID |
|
||||
| --- | --- |
|
||||
| SMTP (Email versand)<br><br>1. Zielsetzung<br>Die Implementierung eines SMTP-basierten E-Mail-Versands in der C#-Backend-Anwendung ermöglicht das Versenden von E-Mails über einen konfigurierten<br> Mailserver. Dies umfasst sowohl systemgenerierte E-Mails (z. B. Bestätigungen, Benachrichtigungen) als auch benutzergenerierte Inhalte.<br>Das Ziel ist eine zuverlässige, sichere und skalierbare Lösung für den E-Mail-Versand.<br><br>2. Aufgabenbeschreibung<br>Die Aufgabe umfasst:<br>Konfiguration des SMTP-Servers: Festlegung von Parametern wie Host, Port, Authentifizierung und Verschlüsselung.<br>Erstellung von E-Mail-Nachrichten: Gestaltung der E-Mails im Text- und HTML-Format.<br>Integration in die C#-Backend-Anwendung: Nutzung von SMTP-Befehlen über .NET-Bibliotheken.<br>Fehlerbehandlung und Logging: Sicherstellung eines robusten Versandprozesses und Nachverfolgung fehlerhafter E-Mails.<br>Sicherheitsmaßnahmen: Schutz der E-Mail-Kommunikation und Verhinderung von Missbrauch.<br><br>3. Dynamischer Versand<br>Benachrichtigungs-E-Mails:<br>Beispiele: Willkommens-E-Mails, Passwort-Zurücksetzen, Bestellbestätigungen.<br>Dynamische Platzhalter (z. B. {Name}, {Bestellnummer}) für personalisierte Inhalte.<br>Massen-E-Mails:<br>Versand an mehrere Empfänger (z. B. Newsletter).<br>Nutzung von BCC oder sequentiellem Versand.<br>3.1 Fehler- und Zustellungsmanagement<br>Protokollierung von fehlgeschlagenen E-Mails (z. B. ungültige Adresse, Verbindung zum SMTP-Server fehlgeschlagen).<br>Rückmeldung an die Anwendung, wenn der Versand erfolgreich war.<br>Möglichkeit zur späteren Wiederholung fehlgeschlagener E-Mails.<br><br>4. Nicht-funktionale Anforderungen<br>Performance:<br>E-Mails sollen innerhalb von 3 Sekunden pro Nachricht versendet werden.<br>Unterstützung von mindestens 100 gleichzeitigen E-Mails bei Massenversand.<br>Skalierbarkeit:<br>Vorbereitung auf den Versand von bis zu 10.000 E-Mails pro Tag.<br>Sicherheit:<br>Verschlüsselung der Verbindung zum SMTP-Server (TLS/SSL).<br>Schutz vor Spam und Missbrauch (z. B. Rate-Limiting).<br>Kompatibilität:<br>Unterstützung moderner E-Mail-Clients (z. B. Gmail, Outlook, Thunderbird).<br>Sicherstellung der Anzeige von HTML-E-Mails auf Desktop- und Mobilgeräten.<br><br>5. Technische Umsetzung<br>5.1. Backend<br>Framework: ASP.NET Core.<br>Bibliotheken:<br>Verwendung von .NET System.Net.Mail oder externen Bibliotheken wie MailKit oder FluentEmail für erweiterten SMTP-Support.<br>Architektur:Erstellung eines SMTP-Services:Methoden für das Versenden von einfachen und komplexen E-Mails.Unterstützung für Anhänge und Templates.<br><br>5.2. Sicherheit<br>Schutz der Zugangsdaten:<br>Verwendung eines Secret Managers oder von Umgebungsvariablen für SMTP-Zugangsdaten.<br>Rate Limiting:<br>Begrenzung der Anzahl der E-Mails pro Zeitspanne, um Serverüberlastung zu vermeiden.<br>Spam-Prävention:<br>Konfiguration von SPF, DKIM und DMARC auf der Mailserver-Seite.<br><br>6. Erfolgskriterien<br>Alle E-Mails werden zuverlässig und sicher über den SMTP-Server versendet.<br>Personalisierte Nachrichten und Anhänge werden korrekt verarbeitet.<br>Robustheit gegen typische Fehler und Schutz vor Missbrauch.<br><br>| SnT-2 |
|
||||
| LinkedÌn OAuth (Phase 2, oder später)<br><br>Backend zu LinkedIn<br><br>1. Zielsetzung<br>Implementierung von LinkedIn OAuth 2.0 für die Authentifizierung und den Abruf von Profildaten in der C#-Backend-Anwendung.<br><br>2. Anforderungen<br>Registrierung der App im LinkedIn Developer Portal.<br>OAuth 2.0 Authentifizierungsablauf:<br>Weiterleitung zur LinkedIn-Login-Seite.<br>Empfang des Autorisierungscodes.<br>Austausch des Codes gegen ein Zugriffstoken.<br>Abruf von Benutzerinformationen (Vorname, Nachname, E-Mail).<br>Sicheres Token-Management (kein Speichern von Zugangsdaten in der Datenbank).<br><br>3. Technische Umsetzung<br>Backend: ASP.NET Core<br>API-Endpunkte:<br>/auth/linkedin (Weiterleitung zur LinkedIn-Login-Seite).<br>/auth/linkedin/callback (Empfang des Codes).<br>/api/user/profile (Abruf von LinkedIn-Daten mit Token).<br>Sicherheit:<br>Nutzung von HTTPS und PKCE.<br>Speicherung von Tokens nur im Cache (z. B. Redis).<br>Einschränkung der API-Berechtigungen (r_liteprofile, r_emailaddress).<br><br>4. Erfolgskriterien<br>Benutzer können sich sicher über LinkedIn anmelden.<br>Zugriffstoken werden sicher verarbeitet.<br>API-Datenabruf funktioniert zuverlässig.<br> | SnT -3 |
|
||||
| LinkedÌn OAuth (Phase 2, oder später)<br><br>Backend zu LinkedIn<br><br>1. Zielsetzung<br>Implementierung von LinkedIn OAuth 2.0 für die Authentifizierung und den Abruf von Profildaten in der C#-Backend-Anwendung.<br><br>2. Anforderungen<br>Registrierung der App im LinkedIn Developer Portal.<br>OAuth 2.0 Authentifizierungsablauf:<br>Weiterleitung zur LinkedIn-Login-Seite.<br>Empfang des Autorisierungscodes.<br>Austausch des Codes gegen ein Zugriffstoken.<br>Abruf von Benutzerinformationen (Vorname, Nachname, E-Mail).<br>Sicheres Token-Management (kein Speichern von Zugangsdaten in der Datenbank).<br><br>3. Technische Umsetzung<br>Backend: ASP.NET Core<br>API-Endpunkte:<br>/auth/linkedin (Weiterleitung zur LinkedIn-Login-Seite).<br>/auth/linkedin/callback (Empfang des Codes).<br>/api/user/profile (Abruf von LinkedIn-Daten mit Token).<br>Sicherheit:<br>Nutzung von HTTPS und PKCE.<br>Speicherung von Tokens nur im Cache (z. B. Redis).<br>Einschränkung der API-Berechtigungen (r_liteprofile, r_emailaddress).<br><br>4. Erfolgskriterien<br>Benutzer können sich sicher über LinkedIn anmelden.<br>Zugriffstoken werden sicher verarbeitet.<br>API-Datenabruf funktioniert zuverlässig.<br> | SnT-3 |
|
||||
|
||||
# Anforderungen an die Software
|
||||
|
||||
|
@ -155,7 +155,7 @@ Redundanzeigenschaften Bespr. Mit Hr. Prof. Gürth
|
|||
|
||||
| Anforderung | ID |
|
||||
| --- | --- |
|
||||
| **Benutzername und Passwort Authentifizierung**: <br> **Im Frontend**: <br> 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. <br> **Vorraussetzungen**: <br><ol><li>Backend-Anforderungen <ul><li>Mechanismen zur Passwort-Validierung und Token-Generierung (z. B. JWT).</li><li>HTTPS für sichere Datenübertragung.</li></ul></li><li>Frontend-Anforderungen <ul><li>Möglichkeit zur Verarbeitung und sicheren Übertragung der Eingaben.</li><li>Mechanismus zur Speicherung von Authentifizierungsdaten (z. B. Tokens).</li></ul></li></ol> **Diese gelten für alle folgenden Punkte!** <br> **Benötigte Komponenten**: <ol><li>Login-Formular: <ul><li>Eingabefelder für Benutzername und Passwort.</li><li>Submit-Button.</li><li>Fehleranzeige bei ungültigen Eingaben oder falschen Daten.</li></ul></li><li>HTTP-Client: <ul><li>Zum Senden von Authentifizierungsanfragen an das Backend (RestAPI).</li></ul></li><li>Token-Management: <ul><li>Speicherung von JWTs (z. B. im localStorage oder Cookies).</li></ul></li><li>Routing: <ul><li>Weiterleitung zu geschützten Seiten nach erfolgreicher Anmeldung.</li><li>Zugangsbeschränkung zu sensiblen Bereichen der App.</li></ul></li></ol><br> **Technologien**: <ol><li>Framework: <ul><li>C#</li><li>HTML</li></ul></li><li>HTTP-Anfragen: <ul><li>RestAPI</li></ul></li><li>Sicherheitsmaßnahmen: <ul><li>HTTPS</li></ul></li><li>Styling: <ul><li>Eigenes CSS</li></ul></li><li>Token-Handling: <ul><li>JWT</li></ul></li><li>Datenbank: <ul><li>PostgreSQL</li></ul></li></ol> **Diese gelten für alle folgenden Punkte!** | ZUG-1 |
|
||||
| **Benutzername und Passwort Authentifizierung**: <br> **Im Frontend**: <br> 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. <br> **Vorraussetzungen**: <br><ol><li>Backend-Anforderungen <ul><li>Mechanismen zur Passwort-Validierung und Token-Generierung (z. B. JWT).</li><li>HTTPS für sichere Datenübertragung.</li></ul></li><li>Frontend-Anforderungen <ul><li>Möglichkeit zur Verarbeitung und sicheren Übertragung der Eingaben.</li><li>Mechanismus zur Speicherung von Authentifizierungsdaten (z. B. Tokens).</li></ul></li></ol> **Diese gelten für alle folgenden Punkte!** <br> **Benötigte Komponenten**: <ol><li>Login-Formular: <ul><li>Eingabefelder für Benutzername und Passwort.</li><li>Submit-Button.</li><li>Fehleranzeige bei ungültigen Eingaben oder falschen Daten.</li></ul></li><li>HTTP-Client: <ul><li>Zum Senden von Authentifizierungsanfragen an das Backend (RestAPI).</li></ul></li><li>Token-Management: <ul><li>Speicherung von JWTs (z. B. im localStorage oder Cookies).</li></ul></li><li>Routing: <ul><li>Weiterleitung zu geschützten Seiten nach erfolgreicher Anmeldung.</li><li>Zugangsbeschränkung zu sensiblen Bereichen der App.</li></ul></li></ol><br> **Technologien**: <ol><li>Framework: <ul><li>C#</li><li>HTML</li></ul></li><li>HTTP-Anfragen: <ul><li>RestAPI</li></ul></li><li>Sicherheitsmaßnahmen: <ul><li>HTTPS</li></ul></li><li>Styling: <ul><li>Eigenes CSS</li></ul></li><li>Token-Handling: <ul><li>JWT</li></ul></li><li>Datenbank: <ul><li>PostgreSQL</li></ul></li></ol> **Diese gelten für alle folgenden Punkte!**<br><br>**Backend:**<br>Überprüfung der empfangenen Anmeldedaten: Zunächst wird nach vorhandenen Benutzernamen gesucht.<br> Passwortüberprüfung: Anschließend wird das eingegebene Passwort mit den Daten in der Datenbank verglichen. | ZUG-1 |
|
||||
|
||||
<table><tbody>
|
||||
<tr><td style="text-align: left"><p><strong><b>Passwort zurücksetzen</b></strong>
|
||||
|
@ -177,13 +177,21 @@ Die Passwort-Zurücksetzen-Funktion im Frontend ermöglicht es Benutzern, über
|
|||
|
||||
</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.
|
||||
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.</p></td>
|
||||
<p>Passwortreset-Funktion
|
||||
E-Mail-Eingabe: Benutzer geben ihre E-Mail-Adresse ein, um einen Passwortreset anzufordern.
|
||||
E-Mail-Versand
|
||||
Token: Ein einmaliger, zeitlich begrenzter Token wird generiert und an die E-Mail-Adresse gesendet.
|
||||
Sicherheitsanforderungen
|
||||
Token-Generierung: Sicherer Algorithmus zur Token-Generierung.
|
||||
Link-Inhalt: Der Link enthält keine sensiblen Informationen.
|
||||
Datenbankoperationen
|
||||
Passwort-Hash: Der neue Passwort-Hash wird in der Datenbank gespeichert und überschreibt den alten Eintrag.
|
||||
Fehlerbehandlung
|
||||
Fehlermeldungen:
|
||||
Bei nicht registrierter E-Mail.
|
||||
Bei abgelaufenem Token.
|
||||
Protokollierung
|
||||
Anfragen: Alle Passwortreset-Anfragen werden protokolliert.</p></td>
|
||||
|
||||
<td><p>ZUG-2</p></td></tr>
|
||||
|
||||
|
@ -208,18 +216,18 @@ Die Implementierung von Rollen im Frontend dient der Steuerung von Benutzerzugri
|
|||
|
||||
|
||||
<p>Backend:</p>
|
||||
<p>Rollendefinition:
|
||||
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.</p></td>
|
||||
<p>Rollendefinition
|
||||
Rollen: Definition von Rollen (z.B. Administrator, Benutzer, Gast) mit spezifischen Berechtigungen.
|
||||
Datenbankstruktur
|
||||
Datenbanktabelle: Entwurf einer Tabelle zur Speicherung von Rollen und deren Berechtigungen.
|
||||
Rollenvergabe
|
||||
Funktionen: Implementierung von Funktionen zur Zuweisung und Entziehung von Rollen an Benutzer im Backend.
|
||||
Berechtigungsprüfung
|
||||
Middleware/Funktion: Entwicklung einer Middleware oder Funktion, die bei jeder Anfrage überprüft, ob der Benutzer die erforderlichen Berechtigungen hat.
|
||||
Sicherheitsanforderungen
|
||||
Autorisierung: Sicherstellen, dass nur autorisierte Benutzer (z.B. Administratoren) Rollen ändern oder zuweisen können.
|
||||
Protokollierung
|
||||
Änderungen: Implementierung von Protokollierungsmechanismen für Änderungen an Rollen und Berechtigungen zur Nachverfolgbarkeit.</p></td>
|
||||
|
||||
<td><p>ZUG-3</p></td></tr>
|
||||
|
||||
|
@ -319,22 +327,24 @@ Die Magic Link Authentifizierung ermöglicht es Benutzern, sich ohne Passwort an
|
|||
|
||||
|
||||
<p>Backend:</p>
|
||||
<p>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.</p></td>
|
||||
<p>
|
||||
Benutzerregistrierung
|
||||
Registrierungsfunktion: Implementierung einer Funktion zur Registrierung potenzieller Benutzer, die ihre E-Mail-Adresse und andere erforderliche Informationen erfasst.
|
||||
E-Mail-Versand
|
||||
E-Mail mit Authentifizierungslink: Nach der Registrierung muss eine E-Mail an die angegebene Adresse gesendet werden, die einen Authentifizierungslink enthält.
|
||||
Link-Generierung
|
||||
Token: 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
|
||||
Speicherung: 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
|
||||
Token-Überprüfung: 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
|
||||
Aktivierung: Nach erfolgreicher Verifizierung des Tokens muss das Benutzerkonto aktiviert werden.
|
||||
Fehlerbehandlung
|
||||
Fehlermeldungen: Bereitstellung von klaren Fehlermeldungen, wenn der Token ungültig oder abgelaufen ist, und gegebenenfalls die Möglichkeit zur erneuten Anforderung des Authentifizierungslinks.
|
||||
Protokollierung
|
||||
Nachverfolgbarkeit: Protokollierung aller Authentifizierungsanfragen und -versuche.
|
||||
</p></td>
|
||||
|
||||
<td><p>ZUG-6</p></td></tr>
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user