46 votos

Cómo abrir-fuente de una aplicación que utiliza la API de teclas

Para un proyecto de compañía, desarrollar una aplicación de escritorio que requiere claves de API de diferentes servicios web.

He estado yendo a través de y la preparación de esta aplicación para ser de código abierto y correr a través de el problema de qué hacer con esas claves.

El problema es este: Mi entendimiento es que estas claves de API no debe ser visible para cualquier persona que utilice la aplicación o ver/modificar el código fuente. Desde el webservice del final, estas claves de API se utilizan para identificar las aplicaciones que tienen acceso a su API, y permitir/bloquear el uso, según corresponda. En la mayoría de las condiciones de servicio para la recepción de estas claves es en realidad explícitamente que las claves no deben ser compartidas con el mundo.

En la actualidad todos mis llaves codificadas de forma rígida, pero estoy en un callejón sin salida en cuanto a cómo manejar la situación de las claves privadas de la abrir-fuente de la aplicación:

-Si las claves siguen siendo codificado, que van a ser visible al público tan pronto como mi código fuente.

-Realmente no puedo omitir el archivo de origen con las claves de la distribución de código, desde luego no va a compilar. Esta técnica se soluciona el problema, sino que introduce una nueva, inaceptable uno.

-Si presiono las teclas de un .ini u otro archivo de configuración, y simplemente no incluir ese archivo en mi público repositorio de código, todavía tendría que ser distribuido con el binario de mi aplicación para que la aplicación funcione, así que mis llaves sería visible en la distribución de la aplicación en lugar de la distribución de código fuente. No es una mejora. Cualquier cifrado de gimnasia he intentado utilizar en este archivo INI sería la adición de la complejidad para cualquiera que intente modificar mi código.

Así, con respecto a mi codebase (actualmente bajo Mercurial para el control de versiones), ¿cuál es la mejor manera de gestionar todo para que el código pueda ser pública, pero mis llaves estancia privada?

17voto

Kornel Kisielewicz Puntos 26556

No sé qué idioma que está utilizando, pero por ejemplo, en C/C++ te gustaría añadir un archivo de inclusión con las claves de API, y luego dejarlo fuera del control de origen, en lugar de agregar un falso archivo con explícitamente falso claves de API. La mayoría de los idiomas tienen uno o el otro camino para incluir archivos.

8voto

IET_DEMO Puntos 31

Su aplicación debe utilizar un archivo de configuración. Este archivo de configuración se cargan en tiempo de ejecución y no debería afectar a la compilación. El permite a los usuarios descargar un binario y utilizar su propia clave de api.

Como Kornel dice, puede incluir un ejemplo de archivo de configuración con un falso Clave de API, en su control de código fuente.

Otra opción, podría hablar a la gente correr de los webservices y pedir una de las dos cosas.

  1. Una clave temporal, que sólo funciona para una funcionalidad limitada. Que permiten a los usuarios ver la funcionalidad básica de la aplicación, pero algunas personas nunca actualización de la clave y el uso de las cosas básicas.

  2. Hable con los webservices para ver si te van a dar un especial de una Clave de API para su aplicación. La versión de código fuente abierto requerirá a los usuarios a entrar en su propio. Pero su binario podría utilizar un estándar de uno.

La idea de usar una configuración de una clave de api, no es nueva ni desconocida. Bit.ly servicios de hacerlo. Y todas las aplicaciones de código abierto veo que proporcionan el uso de con Poco.ly pedirá el nombre de usuario y una clave de api antes de poder usarlo.

Esto no es diferente?

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X