Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Login-Funktion: nur ein Benutzer mit bestimmten Zugangsdaten (https://www.delphipraxis.net/51859-login-funktion-nur-ein-benutzer-mit-bestimmten-zugangsdaten.html)

romber 20. Aug 2005 18:01


Login-Funktion: nur ein Benutzer mit bestimmten Zugangsdaten
 
Hallo!

Ich stehe vor einer ziemlich komplizierten Aufgabe und weiß nicht genau, ob so etwas überhaupt machbar ist und absturz- und pannensicher funktionieren kann. Und zwar, ich brauche eine Login/Logout-Funktion, die nur einen Benutzer mit den bestimmten Zugangsdaten zur selber Zeit rein lässt. Ich meine, wenn ein Benutzer angemeldet ist und ein zweiter versucht, sich mit den gleichen Zugangsdaten anzumelden, wird dem letzten den Zugang verweigert.

Auf ersten Blick ist das ganze gar nicht so schwer und lässt sich theoretisch mithilfe einer Datenbank realisieren. Man setzt den Status auf "1" wenn Benutzer angemeldet ist auf dann wieder auf "0" wenn Benutzer sich abmeldet. Voraussetzung ist natürlich, dass man das Programm immer richtig heruntergefahren wird. In Wirklichkeit ist die Sache wesentlich komplizierter. Denn niemand ist von einem Windowsabsturz und Strommausfall abgesichert und wenn etwas abstürzt, ist man natürlich nicht abgemeldet und kommt nicht noch mal rein etc. Da muss man wieder irgendwelche Pings einbauen, die wieder mal wahrscheinlich auf IP-Basis funktionieren und somit auch unsicher sind, weil die dynamisch zugewiesen IP-Adressen sich providerseitig ständig ändern... Habe jetzt mittlerweile selbst den Übersicht verloren, was da alles gemacht und berücksichtigt werden muss.

Letztens ist natürlich die Sicherheit des ganzen eine große Frage.

Hat jemand schon so etwas gemacht? Wie würdet Ihr so was realisieren und ob es Sinn macht, damit überhaupt anzufangen? Eure Meinungen und Erfahrungen sind mir jetzt wichtig.

Vielen Dank!

Jelly 20. Aug 2005 19:49

Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
 
Was für ein OS benutzt du. Steht vielleicht sogar irgendwo ein Windows2000 oder Windows2003 Domänenkontroller rum...

Ich weiss es nicht 100%, aber ich meine in den Gruppenrichtlinien kannst du so Sachen einstellen... Starte doch mal gpedit.msc und wühle dich durch. Das sollte auf XP Prof. zumindest realisierbar sein.

romber 20. Aug 2005 19:56

Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
 
Es läuft sogar Windows Server 2003 Enterprise auf dem Server-Rechner in der Firma, wo das ganze betrieben werden soll. Und eine Activ Directory einzurichten wäre auch kein Problem.

@Jelly: Meinst du jetzt, dass ich die selbst programmierte Anwendung irgendwie in den Domain Controller indegriere oder was? Habe ich nicht ganz vertanden?

Jelly 20. Aug 2005 20:02

Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
 
Ich würd mal kucken, ob das Ganze eben nicht direkt auf Domänencontroller im AD zu lösen ist. An so Sachen würd ich mich mit Delphi nicht rantrauen. Habt Ihr einen Administrator der in den ganzen AD Einstellungen fit ist, dann frag mal den. Ich bin mir fast sicher, dass es irgendwie dort direkt eine Möglichkeit gibt, die Anzahl der Sitzungen pro Benutzer auf eins zu beschränken.

romber 20. Aug 2005 20:27

Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
 
Was Windows angeht, bin ich mir auch ziemlich sicher, dass es so was gibt Die Frage ist, wie kann ich die Login-Funktion eigenes Programms mit der Benutzereinstellungen der Active Directory zusammenspielen lassen? :gruebel:

Phistev 20. Aug 2005 20:28

Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
 
Speicher statt '1' dir aktuelle Zeit in der Datenbank (am bestem als UNIX-Timestamp). Wenn der Login (oder die letzte Aktivität) länger als 3600 Sekunden (1 Stunde) zurückliegt, sollte das Programm abgestürzt sein. Damit brauchst du kein Active Directory

Palando 20. Aug 2005 20:47

Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
 
Du könntest wie Phistev sagte, einfach jede Aktivität überprüfen und wenn keine mehr da ist ausloggen.

Du könntest altlernativ auch einfach den Client alle X Sekunden eine Art "Keep alive"-Signal senden lassen und wenn das ne Zeit lang nicht kommt, ist das Programm tot. Das muss ja im Prinzip nicht oft sein... einmal alle 5 Minuten oder so...


Edit: Wobei ich Phistevs Methode eleganter finde, ehrlich gesagt.

Jelly 20. Aug 2005 20:53

Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
 
Zitat:

Zitat von romber
Was Windows angeht, bin ich mir auch ziemlich sicher, dass es so was gibt Die Frage ist, wie kann ich die Login-Funktion eigenes Programms mit der Benutzereinstellungen der Active Directory zusammenspielen lassen? :gruebel:

Ach so, ich dacht es ging um die Anmeldung in Windows überhaupt. Wenn es nur um dein eigenes Programm geht, musst du natürlich Hand anlegen. Da hab ich dich falsch verstanden.

Was für eine Datenbank nutzt du dann. Wenn du MSSQL einsetzen kannst, da kannst du dir mal die Tabelle sysprocesses aus der Master Datenbank anschauen, da siehst, welcher Login (loginame) gerade in der Datenbank eingeloggt ist. Du siehst sogar, aus welchem Programm (program_name) heraus er sich in der Datenbank eingeloggt hat. Du kannst ja jetzt bei deinem Programm prüfen, ob schon ein Eintrag für den besagten Login besteht. An die Zeit, wann die letzte Datenbankaktivität war kommst du auch über diese Systemtabellen vom SQL Server... Ich denke damit liesse sich was machen, zumal bei Systemabsturz diese Einträge vom SQL Server in regelmässigen Abständen aktualisiert werden.

romber 20. Aug 2005 21:40

Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
 
Zitat:

Zitat von Palando
Du könntest wie Phistev sagte, einfach jede Aktivität überprüfen und wenn keine mehr da ist ausloggen.

Du könntest altlernativ auch einfach den Client alle X Sekunden eine Art "Keep alive"-Signal senden lassen und wenn das ne Zeit lang nicht kommt, ist das Programm tot. Das muss ja im Prinzip nicht oft sein... einmal alle 5 Minuten oder so...


Edit: Wobei ich Phistevs Methode eleganter finde, ehrlich gesagt.

Wie sende ich so ein "Keep alive"-Signal? Über TCP-Sockets? Und wenn der Benutzer sich einloggt und dann ändert der Provider die IP-Adresse. Dann kommt Ping ja nie an, und der denkt Server, das Programm sei abgestürzt und loggt der Benutzer aus, obwohl der immer noch online ist. Ich denke, der Client muss sich auch irgendwie melden, a la "ich bin nicht tot" oder so etwas in der Art. Oder verstehe ich etwas falsch?

Phistev 20. Aug 2005 21:45

Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
 
Es war davon die Rede, dass der Client das Keep-Alive-Signal sendet, nicht der Server.
Dafür kann man TCP- oder UDP-Sockets verwenden


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz