Laden...

Windows Domänen Passwörter prüfen

Erstellt von edsplash vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.845 Views
edsplash Themenstarter:in
390 Beiträge seit 2008
vor 15 Jahren
Windows Domänen Passwörter prüfen

Hi

Ist es prinzipiell möglich, das Passwort eines Windows-Benutzers zu prüfen ?
Mein Ziel ist es, dass sich jeder Benutzer, der in einer Domäne integriert ist automatisch einen Login hat. Er muss also nur seinen Windows Benutzernamen und das Passwort eingeben und das Programm sollte dann direkt das Passwort überprüfen, ob es mit demjenigen das in der Domäne gespeichert ist übereinstimmt (Also ähnlich wie beim Outlook WebAccess). Ich habe schon in der Boardsuche, MSDN und auf Google gesucht aber nichts Brauchbares gefunden.

Gruss

using Skill

3.728 Beiträge seit 2005
vor 15 Jahren
Windows-Anmeldung

Hallo edsplash,

warum verwendest Du nicht einfach integrierte Windows-Authentifizierung? Für den Benutzer ist ein zusätzlicher Login nur nervig. Er hat sich ja bereits an der Domäne angemeldet. Du kannst über den aktuellen WindowsPrincipal prüfen, ob der Benutzer sich korrekt beim Betriebssystem authentifiziert hat.

Hier ist sowas implementiert: .NET Applikationsserver

edsplash Themenstarter:in
390 Beiträge seit 2008
vor 15 Jahren

Hallo Rainbird

Es geht auch darum, dass sich andere Benutzer des Systems, die nicht am Computer angemeldet sind, direkt anmelden können, falls sie in der Domäne vorhanden sind. Das möchte ich vorallem, weil sonst jedermann an einen angemeldeten Computer sitzen könnte und sofort Zugriff auf das System hätte. Ansonsten könnte ich auch direkt die Benutzernamen verwenden 😉

using Skill

3.728 Beiträge seit 2005
vor 15 Jahren
Rollen

Das möchte ich vorallem, weil sonst jedermann an einen angemeldeten Computer sitzen könnte und sofort Zugriff auf das System hätte.

Nö, das ist nicht so. Du kannst eine Rollenprüfung durchführen. Dann kann er die Anwendung nur verwenden, wenn er Mitglied einer bestimmten Gruppe ist.

Du kannst einfach das komplette fertige Windows-Sicherheitssystem verwenden. Das ist in den meisten Fällen sicherer, als ein selbst implementiertes.

Was für eine Art Anwendung ist es denn? Windows.Forms, ASP.NET, WPF, XBAP, Silverlight, Office-Add-In ...?

edsplash Themenstarter:in
390 Beiträge seit 2008
vor 15 Jahren

wird wohl windows forms werden 😉

Mein Problem ist einfach, dass wenn ein Computer z.b. mit dem Benutzer Xy angemeldet ist, der Computer aber nicht gesperrt wurde. Dann kann jeder x beliebige kommen und das Programm öffnen, weil ja der andere Benutzer angemeldet ist, und kommt so relativ einfach in seinen Account rein. Aus diesem Grund wollte ich eine Benutzer und Passwort Eingabe einbauen.

using Skill

H
116 Beiträge seit 2008
vor 15 Jahren

Hallo!

Mein Problem ist einfach, dass wenn ein Computer z.b. mit dem Benutzer Xy angemeldet ist, der Computer aber nicht gesperrt wurde. Dann kann jeder x beliebige kommen und das Programm öffnen, weil ja der andere Benutzer angemeldet ist, und kommt so relativ einfach in seinen Account rein.

Eine zusätzliche Kennwortabfrage halte ich für wenig hilfreich, da diese den Benutzer nervt. Bei dem von Dir vorgegebenen Szenario sollten eher die Anwender sensibilisiert werden, sich beim Verlassen des Arbeitsplatzes abzumelden. Es ist nämlich im hohen Maße wahrscheinlich, dass der von Dir skizzierte, nachlässige Anwender nicht nur bei Windows angemeldet ist, sondern auch Dein Programm vor der Mittagspause nicht beendet. Da hilft dann auch kein Kennwort mehr.

Hinrich

B
114 Beiträge seit 2007
vor 15 Jahren

Stimme ich vollkommen zu.
In einem vernünftig geführten Unternehmen steht das in den Datenschutzrichtlinien und für die unterschreibt man dann auch das Einverständnis.
Die Folgen hat der User zu tragen der sich nicht abgemeldet hat.

1.457 Beiträge seit 2004
vor 15 Jahren

Man kann alles mögliche in Datenschutzrichtlinien festlegen, aber wenn es Anwendungen gibt, die kein Active Direcory unterstützen dann wirst du immer solche doppelte Anmeldungen haben. Es gibt aber auch Unternehmen, die das auch explizit wollen und verlangen, das man sich zweimal anmeldet. Aus dem einfachen Grund das z.B. das Ummelden / Benutzer wechseln länger dauert als die Anwendungen zu beenden und wieder mit einem anderen Benutzer sich anzumelden.

edsplash Themenstarter:in
390 Beiträge seit 2008
vor 15 Jahren

Hm.. ich werde mich mal ein wenig mit der Windows-Authentifizierung befassen. Dann kann ich besser abschätzen ob es das ist, was ich benötige.

using Skill

G
497 Beiträge seit 2006
vor 15 Jahren

mist, da hatte der Serverausfall meinen Post geschluckt.

Prüfung gegen ein Active Directory:


using System.DirectoryServices;
...
DirectoryEntry dirEntry = new DirectoryEntry(adServerName, username, password, AuthenticationTypes.Secure);
...

wenn dirEntry gefunden wurde, konnte der Benutzer gefunden und mit dem übergebenen Passwort authentifiziert werden.

edsplash Themenstarter:in
390 Beiträge seit 2008
vor 15 Jahren

ist mit "adServerName" der Name des Domain-Controllers gemeint ?
An was erkenne ich ob dirEntry "gefunden" wurde ?

Gruss

using Skill

G
497 Beiträge seit 2006
vor 15 Jahren

ja, ich prüfe in meinem Code direkt gegen einen DC. Aber es gibt anscheinend auch Möglichkeiten, den DC vom Framework ermitteln zu lassen.

€: vor den Namen das Protokoll "ldap://" setzen (Beispiel: "ldap://dc1.company.local")

Ich müsste jetzt selber nachschauen, was bei nicht erfolgreicher Authentifizierung passiert. Eine Ausnahme wird anscheinend nicht geworfen, aber entweder ist dirEntry NULL oder dirEntry verweist auf einen "leeren" Account. Du kannst ja mal prüfen, ob dirEntry.Name den Usernamen enthält (oder überhaupt etwas enthält - unter Umständen enthält er nämlich nicht 1:1 den übergebenen Usernamen (der wohl eher der Anmeldename ist), den du angibst, sondern liest ihn aus dem Verzeichnis aus)