2009-05-08 3 views
1

Ich versuche, eine Logik für einen datumsbasierten Lizenzierungsmechanismus für eine Java Web App zu entwickeln. Die App muss in Client-Sites bereitgestellt werden, die möglicherweise keinen Zugriff auf das Internet haben (im Intranet bereitgestellt). In diesem Fall erstelle ich einen Lizenzierungsmechanismus basierend auf Start-/Enddaten. Wenn ich das Datum und die Uhrzeit des Serversystems dafür nutze, riskiere ich, dass der Systemadministrator das Datum/die Uhrzeit des Servers ändert, um den Standort aktiv zu halten. Irgendwelche Vorschläge? Windows-Desktop-Apps scheinen dies zu tun, nicht sicher, wie?Datumsbasierte Lizenzierungslogik für Java Web App?

Sanjay.

+1

"Ich riskiere, dass der Systemadministrator das Datum/die Uhrzeit des Servers ändert, um den Standort aktiv zu halten." Auch wenn die Lizenz heruntergefahren wird und die Software nicht mehr funktioniert, riskieren Sie, einen Kunden für immer zu verlieren. Was ist schlimmer, jemand ändert das Datum (und alle Probleme, die für den Administrator entstehen) oder jemand erneuert sich nie, weil Ihr Lizenzschema so komplex ist? –

+0

Um Kunden nicht zu verärgern, können Sie Ihre App weiterhin ausführen, aber die erweiterten Funktionen entfernen, wenn die Lizenz abgelaufen ist. Und stellen Sie sicher, dass Sie einen einfachen Weg für sie haben, um wieder in Gang zu kommen. – joeytwiddle

Antwort

0

Eine mögliche Lösung:

Sie werden ein aufeinander abgestimmtes Paar Schlüssel und ein Schlüssel überprüfen Klasse Ihren Kunden regelmäßig auszustellen. Die Server-App sollte mit der Verify-Klasse überprüfen, minimal beim Start oder regelmäßig mit JVM-Zeit.

Sie müssen Ihren Kunden auch eine einfache Möglichkeit bieten, aktualisierte Schlüssel/Verifier-Updates zu erhalten.

Am Ende des Tages ist dies immer noch kein vollständiger Beweismechanismus, da die Java-Klassendateien inspiziert und manipuliert werden können, aber es bietet ein temporales Lizenzierungsschema, das nicht von Hostmechanismen abhängig ist.

0

Ermitteln Sie jede Änderung des Systemdatums, indem Sie die App zuletzt aufzeichnen lassen. Wenn es anfängt und feststellt, dass es zuletzt in der Zukunft gelaufen ist, kann man Foulspiel vermuten!

Natürlich, wenn der Benutzer finden kann, wo diese lastRunDate Nummer gespeichert ist, können sie umgehen. Bearbeiten: Es kann auch falsch ausgelöst werden, wenn ein Benutzer das Datum seines Computers falsch erkennt und es ändert. Wenn Sie die Universal Time nicht verwenden, vergessen Sie nicht die Änderungen, die die Sommerzeit betreffen (erlauben Sie ein oder zwei Stunden Flexibilität für gültige Datumsänderungen).

1

Hmm, ich denke, wenn die Regeln sind: (a) Die Lizenzierung muss auf Anfangs- und Enddaten basieren; und (b) Man kann nicht annehmen, dass der Computer mit der Außenwelt verbunden ist, und ich glaube nicht, dass das Problem sogar theoretisch lösbar ist. Ihre einzige Quelle für das Datum ist ein Datum auf dem Computer selbst, entweder das Systemdatum oder ein anderes Datum, das der Benutzer eingibt. Vielleicht vermisse ich etwas, aber ich sehe nicht, wie es dem Nutzer NICHT möglich wäre, über das Datum zu lügen. Ich meine, wenn der Computer nicht mit der Außenwelt verbunden ist, gibt es definitionsgemäß keine externe Quelle, um das Datum zu überprüfen. Sie könnten etwas wie Joeytwiddles Vorschlag tun, Plausibilitätsprüfungen für das Datum durchzuführen, die Daten, die Sie vorher gesehen haben, aufzuspüren und nach verdächtigen Daten zu suchen, wie dem Datum, an dem es zurückgeht oder am selben Tag für die letzten 6000 Läufe oder was auch immer. Darüber hinaus scheint dies ein Problem bei der Quadratur des Kreises oder der Suche nach einem ehrlichen Politiker zu sein: Es kann einfach nicht gemacht werden.