una - wordpress api rest url
Cómo abrir una aplicación que utiliza claves de API (2)
Para un proyecto de mascota, desarrollo una aplicación de escritorio que requiere claves API de varios servicios web diferentes.
He estado revisando y preparando esta aplicación para convertirme en fuente abierta y analizar el problema de qué hacer con esas claves.
El problema es el siguiente: tengo entendido que estas claves API no deberían ser visibles para cualquiera que use la aplicación o vea / modifique el código fuente. Desde el fin del servicio web, estas claves API se utilizan para identificar aplicaciones que acceden a su API, y permiten / bloquean el uso según corresponda. En la mayoría de los TOS para recibir estas claves, en realidad se establece explícitamente que las claves no se deben compartir con el mundo.
Actualmente, todas mis claves están codificadas, pero estoy en un callejón sin salida en cuanto a cómo manejar la situación de las claves privadas en una aplicación de código abierto:
-Si las claves permanecen codificadas, serán visibles públicamente tan pronto como esté mi código fuente.
-No puedo realmente omitir el archivo de origen con las claves de la distribución del código, ya que entonces no se compilará. Esto técnicamente soluciona el problema, pero introduce uno nuevo, inaceptable.
-Si presiono las teclas para un .ini u otro archivo de configuración, y simplemente no incluyo ese archivo en mi repositorio de código público, todavía tendría que ser distribuido con el binario de mi aplicación para que la aplicación funcione, por lo que mis claves serían visibles en la distribución de la aplicación en lugar de la distribución fuente. No es una mejora. Cualquier gimnasia de encriptación que intenté utilizar en este archivo INI agregaría complejidad a cualquiera que intente modificar mi código.
Entonces, con respecto a mi base de código (actualmente bajo Mercurial para control de versiones), ¿cuál es la mejor manera de administrar todo para que el código pueda ser público, pero mis claves se mantienen privadas?
No sabe qué idioma está usando, pero por ejemplo en C / C ++ agregaría un archivo de inclusión con las claves de API, y luego lo dejaría fuera del control de fuente, en su lugar agregaría un archivo falso con claves de API explícitamente falsas . La mayoría de los idiomas tienen una u otra forma de incluir archivos.
Tu aplicación debería usar un archivo de configuración. Este archivo de configuración se carga en tiempo de ejecución y no debería afectar a la compilación. El permite a los usuarios descargar un archivo binario y seguir usando su propia clave api.
Como dice Kornel, puede incluir un archivo de configuración de ejemplo con una clave API falsa en su control de origen.
Otra opción, puede hablar con las personas que dirigen los servicios web y solicitar una de dos cosas.
Una clave temporal, que solo funciona para una funcionalidad limitada. Eso permitiría a los usuarios ver la funcionalidad básica de su aplicación, pero algunas personas nunca actualizarían la clave y solo usarían las funciones básicas.
Hable con los servicios web para ver si le proporcionarán una clave API especial para su aplicación. La versión de código abierto requeriría que los usuarios ingresen la suya propia. Pero tu binario podría usar uno estándar.
La idea de usar una configuración para la clave de la API no es nueva ni desconocida. Los servicios de Bit.ly lo hacen. Y todas las aplicaciones de código abierto que veo que proporcionan uso con Bit.ly piden su nombre de usuario y clave api antes de que pueda usarlo.
Esto no es diferente?