Das einfachste Lizenzsystem reicht manchmal doch nicht

Vor einiger Zeit habe ich mich entschieden für meine Produkte Simple Software Licensing von Habanero einzusetzen. Ich habe lange nach einer einfachen (und auch günstigen) Standard-Lösung gesucht.

Das Versprechen der Lösung war “nicht Crack-safe, aber ein ausreichendes Level an Schutz. Dafür einfache und schnelle Implementierung”.

Die Grundidee ist einen schwachen Kopierschutz dadurch zu kompensieren, dass die Lizenzinformation gut sichtbar im Programm erscheint. Im Firmengeschäft wird wohl kaum eine Firma den Namen einer anderen Firma in der Statusleiste stehen haben wollen:

lizenzinfo

Die Lizenzprüfung findet offline anhand einer Lizenzdatei (ein Klartext) mit Public-Key/Private-Key Verfahren statt. Einen Key kann man sich also nicht leicht cracken. Nur das Weitergeben einer Lizenz kann man nicht verhindern. Deshalb ist der Schutz schwach.

Warum es doch nicht reicht

Prinzipiell war ich damit äußerst zufrieden. Der Implementierungsaufwand war doch auch relativ gering.

Nun wollte ich über eine Reseller-Plattform die Lizenzgenerierung automatisch nach dem Kaufvorgang umsetzen. Ich hätte nie gedacht, dass es sich als Stolperstein für diesen einfachen Lizenzmechanismus erweist. Aber natürlich benötigt man bei der Bestellung eben Name und Firma des Nutzers (das mag pedantisch sein, aber der Nutzer ist jemand anderes als der Käufer) und das wird beim Bestellvorgang standardmäßig nicht erfasst.  Alle Reseller bzw. Payment-Plattformen, die ich evaluiert habe, unterstützen prinzipiell zwar benutzerdefinierte Felder, jedoch alle nur global für die Bestellung, nicht je gekaufter Lizenz. Solange also im Kaufvorgang nur eine Lizenz gekauft wurde, ging alles wunderbar. Aber lockt nun ein Kunde, der gleich mehrere Lizenzen auf einmal kaufen will, dann wurde es schwurbelig. Tage habe ich dabei versiebt “irgendeine” Lösung zu finden.

Reißleine

Es ist sicher nicht unmöglich mit diesem (Simple Software Licensing) Lizenzsystem online automatisiert zu verkaufen, aber man muss immer Komprimisse eingehen. Das wollte ich nicht.

Also habe ich nun das gemacht, was ich initial vermeiden wollte. Ich habe mir ein eigenständiges Lizenzsystem geschrieben. Eines das Lizenzen online aktiviert (deutlich sicherer, da Lizenz nicht mehr einfach kopierbar) und vor allem zunächst nur Lizenzen als Serial generiert. Kurzum ein System, was sich gut mit Reseller-Systemen verträgt. Nutzer, E-Mail und Firmenname müssen dann später bei der Aktivierung vervollständigt werden. Erst dann wird mit Public-Key/Private-Key Verfahren eine Offlinelizenz erzeugt.

Simple Software Licensing konnte zwar prinzipiell auch Mietmodelle unterstützen (die Lizenzen hatten ein Ablaufdatum), aber es musste für jeden Bezahlzeitraum dann eine neue Lizenz eingespielt werden. Meine Lösung versucht automatisch die Lizenz zu erneuern, wenn die lokale Lizenz abgelaufen ist. Somit sind auch kurze Mietintervalle für den Nutzer komfortabel.

Erstaunlicherweise war der Aufwand für die eigene Lösung kaum höher, als bei der Reseller-Integration. Eine GUI gibt es zwar nicht, aber dafür eine saubere Service-orientierte Architektur.

Ehrlich gesagt ist es so gut geworden, dass ich es überlege, es noch etwas aufzupolieren und als Produkt anzubieten. “Das einfachste” hat doch Tradition als Baustein für neue Produkte ;)