Tengo una aplicación web del lado del cliente que se ejecuta en la colección de sitios de SharePoint, cada colección de sitios tiene su propia identificación única. Quiero usar un proceso de licencia para bloquear la aplicación a una colección de sitios.
Este es el proceso de desafío-respuesta que estoy tratando de implementar:
- Se le solicitó al usuario que genere
challenge code
-
challenge code
essite_collection_id
procesado a través de alguna función - El usuario me envía
challenge code
- Encripto / hash
challenge code
con algo (¿clave privada RSA?) - El resultado cifrado se considera el
license key
que envío al usuario - El usuario guarda
license key
en la aplicación
Proceso de validación:
- En la carga de la aplicación, recupera
license key
- Descifrar / un-hash
license key
usando algo (¿clave pública RSA?) - El resultado es el
challenge code
que el usuario ha enviado antes - Compare el
challenge code
que ha generado a partir dellicense
con el que obtendría del sitio para determinar si coinciden
¿Esto tiene sentido? Lo único de lo que no estoy seguro es sobre las cosas de clave pública / privada y si hay una manera de hacerlo en JavaScript. Por lo que he leído, no puedo usar RSA de forma segura para cifrar con clave privada y descifrar con público. Normalmente es lo contrario. Así que estoy buscando alternativas
Para ser claro, necesito almacenar algo en el script de la aplicación que pueda usar para descifrar la licencia, pero estaría encriptando el código de desafío en un sitio diferente o en el lado del servidor
Sé que es imposible asegurar al 100% las aplicaciones del lado del cliente. Solo estoy buscando algo para evitar que alguien distribuya la aplicación fácilmente