Sviluppo un server di licenze e un sistema di client di licenza (applicazioni basate su Java).
Il flusso è il seguente:
- La licenza è memorizzata sul server di licenza
- L'applicazione client include un componente client di licenza.
- Il client di licenza si connette al server licenze tramite HTTPS per recuperare le informazioni sulla licenza.
- La licenza non viene passata al client di licenza - solo le informazioni se la licenza è abilitata.
- Se la licenza è abilitata, il client di licenza ritorna all'applicazione client lo stato concesso in licenza ed è possibile utilizzare l'applicazione client.
- Se la licenza non è abilitata, il client di licenza avvia il periodo di valutazione (ad esempio 30 giorni). Durante questo periodo raccomandiamo ai nostri clienti di acquistare la licenza.
- Se viene passato il periodo di valutazione, il client di licenza ritorna all'applicazione client lo stato senza licenza e non è possibile utilizzare le applicazioni client.
Ho il dilemma su come mantenere il tempo di valutazione iniziale, poiché se un cliente può comprometterlo e il periodo di valutazione inizierà nuovamente. Memorizzo lo stato della licenza nel database utilizzando l'algoritmo AES-256, quindi non credo che un cliente sia in grado di decifrare le informazioni. Inoltre, se un cliente rimuoverà lo stato della licenza dal database, non sarà possibile utilizzare l'applicazione client, quindi non mi interessa.
Analogamente, memorizzo il tempo di valutazione iniziale nel database usando l'algoritmo AES-256, quindi non credo che un cliente sia in grado di decifrare le informazioni. Ma ho un problema se un cliente rimuoverà il tempo di valutazione iniziale dal database. In questo caso inizierò il periodo di valutazione dall'inizio.
Desidero memorizzare le informazioni nel database (per poterle in futuro ingrandire con la replica del database). Inoltre, non voglio archiviare il tempo di valutazione iniziale sul server licenze, poiché si tratta di un problema del client. Più dettagliato: in futuro vogliamo supportare la licenza (e il tempo di valutazione) per diversi tipi di permessi. Ad esempio, la licenza per eseguire un lavoro o una licenza per modificare un documento. Pertanto, il cliente può avere una licenza completa per eseguire un lavoro, ma può essere nel periodo di valutazione per modificare un documento.
Qualsiasi suggerimento è più che gradito.