Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   User eindeutig identifizieren (https://www.delphipraxis.net/194840-user-eindeutig-identifizieren.html)

Ghostwalker 13. Jan 2018 08:36

User eindeutig identifizieren
 
Moinsen,

ich bin grad über einem Projekt, bei dem bestimmte Daten pro User gespeichert werden müssen (DB).

Dabei gibt es folgende Szenarien die ich gerne abdecken würde:

a) Pro PC ein User, Daten lokal
b) Pro PC mehrere User, Daten lokal
c) Pro PC ein User, Daten im Netzwerk (also mehre PC's)
d) Pro PC mehrere User, Daten im Netzwerk (mehrere PC's)


Dazu muss ich natürlich den User und den PC eindeutig identifizieren.

Angedacht hab ich bisher den Benutzername (Windows-User), seine SID und die SID des Systems dazu benutzen.

Allerdings weiß ich nicht, wie eindeutig die SID's sind. Außerdem funzt das ganze nur mit Windows. Sollte
ich das Programm doch ein mal z.B. für Linux bauen, kann ich hier nicht mit den SID's arbeiten.

Was gibts sonst noch für Möglichkeiten ?

blawen 13. Jan 2018 08:50

AW: User eindeutig identifizieren
 
Wie wäre es mit der IP-Adresse, MAC-Adresse oder sonst einer (einmaligen) Seriennummer (Festplatte, Prozessor,...) ?

Ghostwalker 13. Jan 2018 09:21

AW: User eindeutig identifizieren
 
Zitat:

Zitat von blawen (Beitrag 1390923)
Wie wäre es mit der IP-Adresse, MAC-Adresse oder sonst einer (einmaligen) Seriennummer (Festplatte, Prozessor,...) ?

IP-Adresse ist häufig dynamisch zugewiesen. Bei den Seriennummern (insbesondere HD) ists durchaus auch das gleiche.

MAC-Addresse ist eine Idee. Hab grad mal ein kleines Testprogi gemacht....ich hab geschl. 5 Stück im Rechner :shock:

Welche nehme ich denn da ?

Bernhard Geyer 13. Jan 2018 09:31

AW: User eindeutig identifizieren
 
Ich würde <Domain>\Username nehmen.

ist es ein lokaler User (Als keine Anmeldung an der Domain) dann bekommst du <Rechnername>\<Lokaler username>
Ist es ein Domain-User, so bekommst du <Domain>\<Domain-Username>


Zitat:

Sollte ich das Programm doch ein mal z.B. für Linux bauen, kann ich hier nicht mit den SID's arbeiten.
Was gibts sonst noch für Möglichkeiten ?
Hast du schon eine FMX-Programm? Falls nein, denke nicht so weit in die Zukunft.
Wer weiß ob du in 5 Jahren nicht eine Weblösung hast statt lauter Anwendung für Linux/MacOX/Android/...

Ghostwalker 13. Jan 2018 10:18

AW: User eindeutig identifizieren
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1390927)
Ich würde <Domain>\Username nehmen.

ist es ein lokaler User (Als keine Anmeldung an der Domain) dann bekommst du <Rechnername>\<Lokaler username>
Ist es ein Domain-User, so bekommst du <Domain>\<Domain-Username>


Zitat:

Sollte ich das Programm doch ein mal z.B. für Linux bauen, kann ich hier nicht mit den SID's arbeiten.
Was gibts sonst noch für Möglichkeiten ?
Hast du schon eine FMX-Programm? Falls nein, denke nicht so weit in die Zukunft.
Wer weiß ob du in 5 Jahren nicht eine Weblösung hast statt lauter Anwendung für Linux/MacOX/Android/...

Eine Weblösung (mehr oder weniger) gibts schon. Da gibts den Klassiker mit Anmeldung via Username/Passwort :)

Das würd ich aber gerne in einer Desktoplösung vermeiden.

himitsu 13. Jan 2018 11:41

AW: User eindeutig identifizieren
 
HardwareIDs (CPU, HDD, System-Partition, MAC) bringen ja nichts, wenn man mehrere User pro PC hat,
und wenn sich die Hardware ändert, dann ändert sich auch diese ID. (Reparatur oder Upgrade)

Ja, du kannst die GUID/SID des Windows-Benutzers auslesen.

Oder du generierst eine ID und speicherst sie in den lokalen Userdateien oder der Registry. (wenn dort noch keine ID existiert).
Vorteil einer eigenen ID:
* die überlebt auch ein Backup oder Systemupgrade, also den Umzug auf ein neues System.
* und du kannst die selber ändern/setzen (siehe nachfolgend)

Gleicher Nutzer auf mehreren PCs?
* mehrere IDs zu jedem User bei dir hinterlegen (PC, Schlepptop, Handy)
* oder nur eine ID und den Zweitusern die selbe ID gezielt zuweisen und nach einem Crash kannst du dem nagelneuen User seine alte ID geben und er hat gleich wieder Zugriff

Luckie 13. Jan 2018 12:42

AW: User eindeutig identifizieren
 
Die SID des Benutzers setz sich zusammen aus der SID der Windows Installation und einer fortlaufenden Nummer. 123456789-500 ist zum Beispiel der Standardadmin. Und 123456789-1 wäre der erste angelegte Benutzer.

Uwe Raabe 13. Jan 2018 12:52

AW: User eindeutig identifizieren
 
Zitat:

a) Pro PC ein User, Daten lokal
b) Pro PC mehrere User, Daten lokal
Hier würde ich die Daten ganz einfach in einem geeigneten User-Verzeichnis (z.B. %APPDATA%) ablegen.

Zitat:

c) Pro PC ein User, Daten im Netzwerk (also mehre PC's)
d) Pro PC mehrere User, Daten im Netzwerk (mehrere PC's)
Da bietet sich ein User-spezifisches Netzlaufwerk an, wobei ich auch hier nach den User-Namen zuordnen würde. Wenn ein User auf verschiedenen PCs unterschiedliche Anmeldenamen verwendet, ist das sowieso nicht mehr implizit zuzuordnen. SIDs würde ich in jedem Fall vermeiden.

Ist die Netzwerkumgebung für Roaming Profiles eingerichtet ist, könnte man auch alle vier Szenarien mit %APPDATA% abhandeln.

HolgerX 13. Jan 2018 14:42

AW: User eindeutig identifizieren
 
Hmm..


Macht die Verknüpfung von PC und User überhaupt sinn?

Generell gibt es PC bezogene Parameter, unabhängig welcher User angemeldet ist.
Dann gibt es User-Spezifische Parameter, welche wiederum unabhängig davon sind, an welchem PC er angemeldet ist..

Gibt es Parameter, welche sinnvoll verknüpft sein sollten?

Die Verwendung von MAC/IP/SID (auch ein PC hat eine SID) ist nicht wirklich für die Identifizierung brauchbar, da alles 3 geändert werden kann, bzw. mehrfach (verschieden) vorkommen kann (OK die SID nicht, jedoch ist dies keine globale SID und könnte mehrfach bei verschiedenen Usern vorkommen).

Um einen PC eindeutiger zu identifizieren musst Du dir nur die Parameter anschauen, welche bei MS zur Registrierung verwendet werden.

Dann kommt aber das Problem, wenn deine Anwendung auf einem TerminalServer oder XenDesktop läuft, da die Hardware Bestandteile dann für mehere Clients die selben sind (wenn sie auf dem gleichen Server laufen)..

Deshalb stellt sich hier die Frage: Wie kann der Cleint eindeutig identifiziert werden, wenn die Hardware dafür nicht verwendbar ist?

Es bleibt dann nur der (weiche) Parameter 'Clientname'.... Nicht gerade sicher....



Bei den User sieht es ähnlich aus.

Eine SID ist bei Domain-Servern nur innerhalb der Domaine eindeutig, oder wenn der Rechner ohne Domaine betrieben wird, sogar nur auf dem PC selber.

Auch kann es bei der Verwendung von TerminalServer/XenDesktop dazu kommen, das verschiedene User-Logins verwendet werden.

Somit bliebe dann nur, dass sich der User bei deiner App einen eigenen Name zur Anmeldung (z.B. wie im Internet üblich die EMail).
Und dieser unabhängig von Windows ist. Gerade, da in Firmen für bestimmte Rechner ein fixer Gruppenlogin (Autologin mit festem Usern) verwendet werden, somit für alle an diesem Rechner der gleiche ist.


Alles zusammengefasst ist eine Identifizierung des PCs oder User immer nur schwammig zu betrachten, oder zu verallgemeinern.
Wenn spezielle (wichtige) Dinge über eine Identität gesteuert werden soll, dann besser eine eigene User-Anmeldung in dein Applikation implementieren.

(Nur mal eine grobe, unvollständige Zusammenfassung, ohne ANspruch auf 100% richtigkeit ;) )

Delphi.Narium 13. Jan 2018 15:15

AW: User eindeutig identifizieren
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1390933)
Zitat:

a) Pro PC ein User, Daten lokal
b) Pro PC mehrere User, Daten lokal
Hier würde ich die Daten ganz einfach in einem geeigneten User-Verzeichnis (z.B. %APPDATA%) ablegen.

Zitat:

c) Pro PC ein User, Daten im Netzwerk (also mehre PC's)
d) Pro PC mehrere User, Daten im Netzwerk (mehrere PC's)
Da bietet sich ein User-spezifisches Netzlaufwerk an, wobei ich auch hier nach den User-Namen zuordnen würde. Wenn ein User auf verschiedenen PCs unterschiedliche Anmeldenamen verwendet, ist das sowieso nicht mehr implizit zuzuordnen. SIDs würde ich in jedem Fall vermeiden.

Ist die Netzwerkumgebung für Roaming Profiles eingerichtet ist, könnte man auch alle vier Szenarien mit %APPDATA% abhandeln.

Ohne explizite Anmeldung wird es hier nicht gehen.
Prinzipiell ist Uwes Vorschlag zu folgen.
Hier könnte man dem Anwender jedoch noch die Möglichkeit bieten, sich automatisch einzuloggen. Dazu müsste man dann nach der Anmeldung auch noch die Anmeldedaten in %APPDATA% ablegen. Beim Programmstart prüft das Programm, ob die Anmeldedaten vorliegen und übernimmt sie von dort und übergeht den Anmeldedialog.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:05 Uhr.
Seite 1 von 2  1 2      

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