Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Welche Möglichkeiten zur Passwortspeicherung zur Laufzeit und darüber hinaus gibt es?
DaNeubi
myCSharp.de - Member

Avatar #avatar-4126.png


Dabei seit:
Beiträge: 8
Herkunft: Ingolstadt

Themenstarter:

Welche Möglichkeiten zur Passwortspeicherung zur Laufzeit und darüber hinaus gibt es?

beantworten | zitieren | melden

Hallo liebe Community,

bisher habe ich noch nie mit sensiblen Daten umgehen müssen. Für mein nächstes Projekt muss ich das nun.
Es geht um die Speicherung von Anmeldedaten(Benutzername/Passwort) für eine Windowsdomäne mit Administratorenrechten.

Ich habe mich informiert und die DPAPI gefunden.

Bevor ich das nun implementiere wollte ich mal fragen ob es noch andere (bessere/sicherere) Lösungen bzw. Methoden gibt, Passwörter und Benutzernamen zu speichern?
Gerne auch eure Erfahrungen.

Vielen Dank im Vorraus.

DaNeubi
Wenn du Rechtschreibfehler findest, darfst du die gerne behalten
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

Anhand der Informationen, die Du uns gibst, wozu zB. das ganze gut sein soll, kann man keine wirkliche Aussage machen.
Warum muss denn überhaupt Benutzername und Passwort gespeichert werden. Anwendungsfall?

Anmeldedaten zu speichern ist das absolute letzte Mittel in einer sicheren Umgebung. Grundlegend besteht in vielen Umgebung das absolute No-Go Anmeldedaten zu speichern, wodurch auch DPAPI raus fliegt.
DPAPI hat - wie ein normales Windows Konto eben - die gleichen Schwächen und Angriffspunkte.

Moderne Solutions arbeiten i.d.R. auf allen Ebenen mit Token-basierten Authentifizierungen und Authorisierungen.
Es gibt eigentlich heutzutage keinen wirklichen Prozess mehr, wo es keinen passenden Token-Flow gibt. Und für die wenigen Fälle (zB. Hybrid Access) verwendet man i.d.R. Zertifikate.

Cloud-Umgebungen zB. verbieten prinzipiell das Speichern von Anmeldedaten bzw. ermöglichen diese Fall gar nicht mehr, sondern nur noch Token-, Zertifikate bzw. ein Mix daraus.
MSAL (nachfolger von ADAL) erfordert zwingend Zertifikate für die Token-Generierung; Username-Password wird nicht mehr akzeptiert.
(Amazon und Google sind an vielen Stellen ähnlich streng).
private Nachricht | Beiträge des Benutzers
Alf Ator
myCSharp.de - Member



Dabei seit:
Beiträge: 630

beantworten | zitieren | melden

Dein Wort in Gottes Ohr, Abt!



Hallo DaNeubi

Schau doch mal, ob du dich für deine Anwendung über das Active Directory der Domain authentifizieren kannst. Benutzerverwaltung kann dann darüber laufen. Wenn du den angemeldeten Benutzer nimmst, könnte sogar die Eingabe von Username/Passwort entfallen. Viele Datenbanken unterstützen das übrigens auch.

Security selber implementieren würde ich nach Möglichkeit vermeiden.

Gruß
Alf
private Nachricht | Beiträge des Benutzers
DaNeubi
myCSharp.de - Member

Avatar #avatar-4126.png


Dabei seit:
Beiträge: 8
Herkunft: Ingolstadt

Themenstarter:

beantworten | zitieren | melden

Danke für die Antworten.

Folgendes:


Mein Programm wird auf einem Server laufen und sich per LDAP mit einem Active Directory verbinden.

Im Hintergrund gibt es einen Dienst, welcher immer mal wieder eine Verbindung zum AD aufbaut und dort Informationen ausliest.

Das Passwort und den Benutzernamen muss ich speichern, um mich hier mit einem bestimmten Benutzer anzumelden.
Den Zugriff auf das Passwort brauche ich dann eben zur Laufzeit um Datensätze bzw. Attribute und deren Values zu lesen und bei bedarf auch ändern zu können.

Da es sich hier um eine Automatisierung eines Prozesses handelt, wäre es nicht von Vorteil das Passwort jedesmal einzugeben. Wenn der Server neustartet o.Ä. Fälle soll das Programm wieder funktionieren und nicht erst auf eine Passworteingabe warten müssen.
Wenn du Rechtschreibfehler findest, darfst du die gerne behalten
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

In der Form absolut keine gute Idee; davon ist abzuraten.

AD LDAP: wenn ihr nur einen LDAP habt, dann dringend mal darüber nachzudenken einen echten Token Identity Provider zu verwenden.
Microsoft empfiehlt seit Jahren den Einsatz von ADFS für On-Prem Netzwerke, sodass echte Token-Flows verwendet werden können.
Seit kurzem empfiehlt Microsoft statt LDAP in Zukunft auf Passthrough Authentication zu setzen, was aber immer noch die Story ist: Token statt LDAP.


In Deinem Falll wirst Du also eine Software haben, die auf einem Server als Service registriert ist, sodass diese auch ohne Benutzerinteraktion und auch nach einem Neustart startet.
Und beim Anlegen eines Services in Windows kannst Du hinterlegen, welcher User hier verwendet wird: das ist Dein Weg.

Bitte bastel Dir keine eigene Account-Verwaltungs-Lösung - vor allem nicht mit Adminrechten eines ganzen Netzwerks.
private Nachricht | Beiträge des Benutzers