Unique ID für Device im internen Netzwerk

beta20

Top Contributor
Hallo zusammen,

wie kann ich per JSF ein Gerät eindeutig erkennen?
Ich kann ja die MAC-Adresse ermitteln, aber dann nur vom Server selbst?
Gibt es irgendeinen Identikator ein Gerät eindeutig im internen Netzwerk zu ermitteln?
Die IP kann sich natürlich immer ändern, daher ist dies kein Identikator

Danke für jede Hilfe.
 
Kommt drauf an, wie eindeutig das sein soll - auch die Mac-Adresse ist änderbar.

Meinst du mit JSF JavaServer Faces, also über ne Website?
 
Ja, über eine Webseite, ich nutze JSF.
MAC-Adresse macht wie gesagt kein Sinn, da bekomme ich immer nur die MacAdresse des Servers (oder ich mache etwas falsch?!)
 
Die wirst du über eine Website nicht bekommen.

Kannst UserAgent + IP + Cookies nutzen, aber eindeutig über längere Zeit klappt auch damit nicht.
 
Längere Zeit... Es reicht über 24 Stunden....
IP ist nicht eindeutig - Cookies können gelöscht werden.....
Gibt es keinen anderen Identifier?
 
Weil:
Gerät loggt sich ein und irgendwann aus dem Netz aus (wechselt z.B. das WLAN). Die IP wird frei und wird von einem anderen Gerät genutzt
 
Ich kapiere gar nicht worum es hier geht. Soll jetzt der Client sicherstellen, dass er sich mit dem gleichen Server verbindet oder soll der Server wissen das es der gleiche Client ist? Für sowas gibt es doch Sessions....
 
Also um es auf den Punkt zu bringen:
Ich habe eine Webapplikation auf einem Rechner (also mein Server) am laufen, welche an einem ABEND (oder auch am Tag) in einem WLAN (also internes Netzwerk, nicht Internet!) läuft.
Leute können sich nun in dieses WLAN einloggen und dann diese Webseite abrufen.

Jedes Gerät, welches die Webseite aufruft wird in der Datenbank gespeichert.
-> Die Leute müssen sich also nicht registrieren (Username o.ä. eingeben), sondern das genutzte Gerät wird registriert und in der Datenbank gespeichert. Heißt also sobald die Webseite initial eines Gerätes aufgerufen wird, wird geschaut, ob das Gerät bereits in der Datenbank ist oder nicht.
Wenn nein: in Datenbank speichern
Wenn ja: nichts tun oder letztes eingeloggte Datum neu setzen etc.

Die goldene Frage ist nun, wie kann ich das Gerät eindeutig identifizieren?

- Die IP kann sich theorethisch ändern, sodass das Gerät nicht eindeutig identifiziert werden kann
- SessionID kann sich pro Gerät ebenfalls ändern (Browser schließen etc.)
- MacAdresse wüsste ich nicht, wie ich diese vom Client (also des Handy) bekommen kann, vom Server bekomme ich sie
 
Die IP kann sich theorethisch ändern, sodass das Gerät nicht eindeutig identifiziert werden kann
Na ja, wenn du alles ausschliesst, das sich "theoretisch" ändern könnte, wirst du vermutlich keine Lösung finden. Konzentriere dich doch lieber darauf, was sich auch praktisch ändert. Und dazu scheint die IP-Adresse in deinem Fall nicht zu gehören. Auch DHCP-Clients haben häufig über Monate oder Jahre hinweg dieselbe IP-Adresse.
MacAdresse wüsste ich nicht, wie ich diese vom Client (also des Handy) bekommen kann, vom Server bekomme ich sie
Die kann sich theoretisch natürlich auch ändern. Vielleicht kannst du sie aus dem arp-Cache auslesen, notfalls durch Aufruf des Kommandozeilen-Tools deines Betriebssystem. Unter Windows also arp -a %IP%.

Was spricht eigentlich dagegen, einfach den Hostnamen zu verwenden?
 
Und was spricht jetzt dagegen einfach eine selbst generierte ID als Cookie zu speichern?
Bin auch der Meinung, dass das eine vernünftige Lösung wäre. Ich habe noch nicht verstanden, warum der TE es als Problem sieht wenn Cookies gelöscht werden. Dann wird das Gerät beim nächsten Aufruf eben als neues Gerät eingestuft. Warum sollte das schaden? Das führt ja nicht zu einer Verwechslung mit einem anderen Gerät, was tatsächlich ärgerlich sein könnte.
 
Eine perfekte Lösung dafür existiert meines Wissens nicht, aber eventuell hirnreichende Lösungsmöglichkeiten:

1. Client IP mit entsprechend konfigurierter DHCP Lease Time

2. Client MAC aus dem Webinterface / API des DHCP Servers (Routers) anhand der Client ID auslesen.

3. Client MAC aus dem APR Cache auslesen

Java:
private String getMac(String ip) throws IOException, InterruptedException {

    Pattern pattern = Pattern
                .compile("[0-9a-f]+-[0-9a-f]+-[0-9a-f]+-[0-9a-f]+-[0-9a-f]+-[0-9a-f]+");
    String[] cmd =  System.getProperty("os.name").toLowerCase().contains("win") ? { "arp", "-a", ip } : { "arp", ip };


    Process process = Runtime.getRuntime().exec(cmd);
    process.waitFor();
    BufferedReader reader = new BufferedReader(new InputStreamReader(
                p.getInputStream()));
    String line = null;
    while ((line = reader.readLine()) != null) {
        Matcher m = pattern.matcher(line);
        if (m.find()) {
            return m.group(0);
        }
    }
    return "";
}


4. "Supercookies" wie sie die Werbeindustrie gerne nutzt, z.B.: http://samy.pl/evercookie/
 
Zuletzt bearbeitet:
Es ist nicht vertrauenswürdig, die Mac-Adresse nach außen zu bringen/geben.

Mein Toaster hat auch eine. 😀
 
Ok, das ist ja dann die Lösung.
Wenn sich IP-Adresse ändert, dass es dann immer noch die gleiche Mac-Adresse ist.
Vielen Dank an alle

Klar, sofern der User eine andere Netzwerkkarte nutzt, ist es klar, dass die Mac-Adresse sind auch ändert. Aber das ist auch eine Ausnahme in meinen Use Case.
 
Ok, das ist ja dann die Lösung.
Wenn sich IP-Adresse ändert, dass es dann immer noch die gleiche Mac-Adresse ist.
Vielen Dank an alle

Klar, sofern der User eine andere Netzwerkkarte nutzt, ist es klar, dass die Mac-Adresse sind auch ändert. Aber das ist auch eine Ausnahme in meinen Use Case.
Oder wenn der Nutzer sie Softwareseitig ändert - was uU gemacht wird, um genau solches Tracking zu verhindern (zB iOS, zwar nicht bei verbundenem WLAN, aber beim Scannen)

Es ist nicht vertrauenswürdig, die Mac-Adresse nach außen zu bringen/geben.
Macht ja hier auch niemand^^
 

Neue Themen


Zurück
Oben