Von ASP.NET in die WindowsForms-App-Entwicklung kommend, erwartete ich, ähnliche Steuerelemente zu sehen, mit denen ich arbeiten konnte. Zu meiner Überraschung sah ich keine Sicherheitskontrollen (Login, Benutzerverwaltung, etc.)
Fehle ich etwas, oder muss ich meine eigene Sicherheit für die Anwendung implementieren (rollenbasierte Sicherheit, Benutzerverwaltung usw.)?
Die Anwendung ist für den internen Gebrauch (10-20 Benutzer) geeignet, aber die Sicherheit ist aufgrund sensibler Daten sehr wichtig. (MSSQL Server 2005 ist im Backend, .NET 3.5)
Jede Information wäre willkommen.
Ich denke, meine Frage ist "Gibt es einen Analogon von ASP.NET Mitgliedschaftsprovider in WinForms?"
Nach einigem Googeln fand ich diesen Artikel , ich werde es versuchen, egal andere Vorschläge werden geschätzt.
Meist wird eine Windows Forms-Anwendung in einem internen Netzwerk mit Windows-Domänenkonten verwendet.
In diesem Fall sollten Sie "Integrierte Sicherheit" verwenden, um eine Verbindung zur Datenbank herzustellen und zu testen, ob der Benutzer mit
sonst
authentifizieren Sie den Benutzer / übergeben Sie ihn über Ihre eigene Methode (db-Aufruf)
UND setze das Thread.CurrentPrincipal auf dein eigenes Principal-Objekt
Da Sie keine akzeptierte Antwort haben und ich über diese Frage gestolpert bin, werde ich versuchen, Ihnen ein paar Hinweise zu geben.
Wie bereits erwähnt, ist die Benutzerverwaltung und die rollenbasierte Sicherheit in einer win forms App nicht etwas, das auf der Clientseite funktioniert. Stellen Sie sich in einer Webanalogie vor, dass Sie versuchen, Ihre gesamte Sicherheit mit nur JavaScript und Cookies zu implementieren, wobei Sie keine Informationen auf der Serverseite speichern. Es ist standardmäßig unsicher.
Wie ebenfalls vorgeschlagen wurde, können Sie die Sicherheit in Ihrer Datenbank implementieren und Ihre Benutzer über Ihr Gewinnformular direkt mit der Datenbank verbinden lassen. Ich würde sehr empfehlen, dass Sie solch einen Kurs NICHT verfolgen. Benutzerverwaltung wird zum Albtraum. Sie brauchen eine mittlere Stufe.
Sie sollten einen Webdienst erstellen, der rollenbasierte Sicherheit implementiert (da Sie damit vertraut sind - es gibt bessere Autorisierungsoptionen) und über einen benutzerdefinierten Authentifizierungsspeicher verfügt. Wenn Sie WCF zum Erstellen des Webdiensts verwenden, können Sie dieselben RoleProvider- und MembershipProvider-Klassen verwenden, die Sie in ASP.NET gewohnt sind.
Dieser Web-Service behandelt die gesamte Geschäftslogik Ihres Systems und ist verantwortlich für die Verbindung mit der Datenbank. Es bietet eine sichere Abstraktionsschicht und reduziert die Menge an Datenbankverwaltung, die Sie für die Verwaltung Ihrer Benutzer benötigen. Ihre Win Forms-App wird zu einer UI-Shell, die nur für die Behandlung von Benutzerinteraktionen und die Vorab-Datenvalidierung zuständig ist (Sie sollten auch auf der mittleren Ebene validieren) und sonst nichts.
Ich habe nach dem gleichen gesucht und konnte bis jetzt nichts finden. Sieh dir das an:
Nicht viel hier: NET-Provider in WinForms Ссылка
Die Lösung ist hier. Ein gutes Beispiel (in VB): Verwenden des ASP.NET-Mitgliedschaftsanbieters in einer Windows-Formularanwendung Ссылка
Aber dann dachte ich, gibt es jemanden, der auch die Aspnet Controls für WinForms geschrieben hat? Der Anfang ist hier in diesem MSDN Mag Artikel: Vereinheitlichen Sie Windows Forms und ASP.NET Provider für die Anmeldeinformationsverwaltung Ссылка
Ich hoffe, das beantwortet Ihre Frage;)
Für ein Login-Formular verwende ich meine eigene Komponente, die ein Wrapper um den Aufruf ap / invoke zu CredentialsUIPromptForCredentials (credui.dll) ist, siehe diesen MSDN-Artikel für weitere Informationen. Es bietet Funktionen wie die Fähigkeit, die Passwörter der Benutzer sicher zu speichern.
Es ist irgendwie überraschend, dass dies im Framework nicht verfügbar ist. Möglicherweise weil credui.dll nur auf XP und später verfügbar ist. In diesem Fall können wir es in einer zukünftigen Version des Frameworks sehen.
Was die rollenbasierte Sicherheit angeht, ist sie in einer Client-Anwendung inhärent unsicher, da ein intelligenter Benutzer mit einem Disassembler auf Ihren Quellcode zugreifen kann.
Auch wenn Sie den ASP.NET RoleManager in einer WinForms-App verwenden können, wird dies nicht aktiv unterstützt. Mit RoleManager muss der Benutzer einfach Ihren RoleManager durch seine eigene liberalere Implementierung in der Konfigurationsdatei ersetzen, um Ihre sorgfältig erstellten Autorisierungsregeln zu umgehen.
Der sichere Weg besteht darin, nach Anmeldeinformationen zu fragen (oder Windows-Anmeldedaten zu verwenden) und diese zur Authentifizierung an eine Serviceschicht (entweder direkt an die Datenbank oder beispielsweise einen Webdienst) zu übergeben.
Wenn Sie sich direkt mit der Datenbank verbinden (keine mittlere Ebene), müssen Sie Ihre Sicherheit auf Datenbankebene anwenden.
Wenn Sie weitere Informationen darüber haben, ob Sie eine direkte Verbindung mit der Datenbank vom Clientcomputer oder über einen Webdienst usw. planen, kann ich meine Antwort entsprechend aktualisieren.
Wenn Sie eine direkte Verbindung mit der Datenbank herstellen, müssen Sie sicherstellen, dass die Datenbank nicht nur von Ihrer Anwendung, sondern auch von allen Benutzern, die eine Verbindung zu SQL Server herstellen können, geschützt ist. Sie können die Windows-Authentifizierung verwenden, um eine Verbindung mit SQL Server herzustellen und die darauf basierenden Rollen einzurichten.
Tags und Links security winforms user-management