Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Einfachen Berechtigungsserver / Lizenzserver selber machen? (https://www.delphipraxis.net/91806-einfachen-berechtigungsserver-lizenzserver-selber-machen.html)

Whookie 10. Mai 2007 09:40


Einfachen Berechtigungsserver / Lizenzserver selber machen?
 
Ich habe das Problem, dass ich etliche Programme geschrieben habe (Delphi32.2006.vcl) die an unsere Kunden gehen aber auch hausintern Verwendung finden. Im Haus sollten sie aber zusätzliche Funktionen haben und da manche beim Start auch ein Passwort verlangen ist der Wunsch aufgekommen das sie intern ohne Passwort vollen Zugang bieten.

Momentan habe ich das so gelöst, dass es eigens kompilierte Hausversionen (für mehr Funktionen) gibt und Passwörter grundsätzlich einzugeben sind.

Auch habe ich mir natürlich etliche Gedanken gemacht, ob mit Komandozeilenschalter (ala /internal) oder mittels Registryabfragen (und einem Tool das einen entspr. Key in die Registry schreibt) sowas umzusetzen wäre. Das hat aber immer den Nachteil, dass der Kunde wohl früher oder später den Kommandozeilenschalter rauskriegt (hab ich nämlich schon mal versucht :( ) oder in den Besitz des Registrytools kommt (solche Inhaus-Tools landen irgendwie immer irgendwann beim Kunden).

Meine Idee wäre nun sowas wie einen kleinen "Lizenzserver" im Haus laufen zu lassen. Die Programme können dort nachsehen ob sie bei uns laufen oder nicht und die entspr. Funktionen frei geben.

Bedingungen für ein solches System währen:
> Möglichst keinen zeitlichen Overhead (!!WICHTIG!!)
... vor allem dann, wenn der Server nicht da ist oder kein Netzwerk installiert ist (also wenn das ganze *irgendwo* beim Kunden läuft)
> Lauffähig für w98,w me, w2000, w xp, vista
> Keine zusätzlichen Eingaben von Seiten unserer Kunden (Seriennummer)

Das eigentliche Verfahren könnte ja die MAC des Clients senden und der Server hat eine Liste von freigegebenen MAC's und retourniert für die Freigabe diese MAC (vielleicht verschlüsselt ...

Es würde mir aber wohl auch schon reichen, wenn es irgend ein anderes Kriterium gibt, mit dem ich feststellen kann ob das Programm im Haus läuft (und das ein einmal kompiliertes Programm nicht laufunfähig macht, wenn sich an der EDV-Struktur was ändert).

TIA
Whookie

Jelly 10. Mai 2007 09:42

Re: Einfachen Berechtigungsserver / Lizenzserver selber mach
 
Vielleicht kuckst du mal unter www.ionworx.com
Dort gibts sowas für nicht allzu viel Geld.

Whookie 10. Mai 2007 10:01

Re: Einfachen Berechtigungsserver / Lizenzserver selber mach
 
Danke für die superschnelle :!: Antwort, aber das geht wohl ein bischen weit über das raus was ich mir vorstelle, da müssen dann ja Keys eingegeben werden.(?) Der Kunde sollte möglichst nichts merken von der Sache. Er bekommt die Software und braucht sie auch nicht freischalten. Der Kunde benötigt ohnehin zusätzliche Hardware von uns um damit was anfangen zu können. Auch für die Verwendung im Haus sollten keine Eingaben von Seiten unserer Mitarbeiter nötig sein.

alzaimar 10. Mai 2007 10:41

Re: Einfachen Berechtigungsserver / Lizenzserver selber mach
 
Ich habe ein ähnliches Problem. Ein Reportgenerator kursiert beim Kunden, soll aber eigentlich pro Arbeitsplatz bezahlt werden.

Nun könnte ich die verklagen, aber ich bin ja nicht blöd. Also habe ich einen kleinen Lizenzserver geschrieben (Alpha-Stadium)

Im Server der Admin neue Lizenzen freischalten, die bekommt er von uns (einfache Text-Dateien). Dazu klickt er einfach im 'License Server Manager' auf 'Add Licences' und wählt die Datei(en) aus. Die gleiche Lizenz- (Text)Datei wird dem Endanwender (dem Client) mitgegeben. Dort steht im Klartext (XML) die Software, Version, Lizenz-ID sowie ein Hash drin. Der Hash verhindert, das man die Lizenz-Info einfach überschreiben kann.

Beim Start schickt die Anwendung eine ID (mit IP, PC-Namen etc.) zum Server und der prüft nun, ob die ID überhaupt (noch) gültig ist etc.

Dann wird die Kombination ID, Datum, IP, PC-Name in einer Liste im Server geloggt.

Nach einiger Zeit können wir nachschauen, wann welcher PC mit welcher ID die Software eingesetzt hat. Wenn es viele sind, und das vielleicht auch noch gleichzeitig, dann kann ich meinen Kunden dezent darauf hinweisen, das da irgendwas mit kursierenden Lizenzen nicht in Ordnung ist.

Der Kunde/Anwender bekommt davon gar nichts mit und eventuelle zusätzliche Lizenzen sprechen wir direkt mit dem Admin bzw. dem Abteilungsleiter ab (nach dem Motto: "Also, wir haben da ein lizenztechnisches Problem, das müssten wir mal lösen"). Alle bewahren ihr Gesicht und wir kommen trotzdem zu unserem Geld.

Über den gleichen Lizenzserver werden übrigens auch Softwareupdates eingespielt. Wenn die Version im Client updateberechtigt ist, dann saugt es über den gleichen Kanal ein Upgrade, installiert es auf dem Client und startet neu.

Na ja, ist alles im Alpha-Stadium, klappt aber im Test.

Vielleicht wäre das ja was. Ich muss mal kramen, ob ich das nochmal zum laufen bekomme.

Ach so: Läuft mit Port 212 (Borland socket server), über den auch der Reportgenerator seinen Verkehr abwickelt.

Whookie 10. Mai 2007 11:16

Re: Einfachen Berechtigungsserver / Lizenzserver selber mach
 
Zitat:

Zitat von alzaimar
Na ja, ist alles im Alpha-Stadium, klappt aber im Test.

Vielleicht wäre das ja was. Ich muss mal kramen, ob ich das nochmal zum laufen bekomme.

Klingt interessant ...

hoika 10. Mai 2007 11:24

Re: Einfachen Berechtigungsserver / Lizenzserver selber mach
 
Hallo,

die Indy-Komponenten haben doch schon Server-Socket und
Client-Socket Bespiele drin (auch Delphi selber glaube ich).

In einer Konfigurationsdatei beim Client
schreibst du die IP des Servers rein.
Fehlt der Eintrag, geht der Client davon aus,
dass er nicht die volle Funktionalität hat
(sollte es also sehr schnell erkennen ... ;)

Der Server lauscht auf irgendeinem Port,
bekommst der Client von ihm Antwort,
schaltest du die komplette Funktionalität frei.

Du musst jetzt "nur noch" dafür sorgen,
dass der Server nicht zum Kunden kommt.
Zur Not könnte man die IP des Servers auch fest
im Code einprogrammieren, nat. nicht 192.168.x.x ;)


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 Uhr.

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