Para un proyecto personalizado, desarrollo una aplicación de escritorio que requiere claves API de varios servicios web diferentes.Cómo abrir una aplicación que utiliza las claves de API
He estado revisando y preparando esta aplicación para que se convierta en código abierto y se encuentre con el problema de qué hacer con esas claves.
El problema es este: mi entendimiento es que estas claves API no deberían estar 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 las llaves están codificados, pero por lo que estoy en un punto muerto en cuanto a cómo manejar la situación de las claves privadas en una aplicación de código abierto:
-Si las claves de permanecer codificada de manera, que Seré públicamente visible tan pronto como mi código fuente sea.
-no puedo realmente omitir el archivo fuente con las claves de la distribución del código, ya que entonces no se compilará. Esto resuelve técnicamente el problema, pero presenta un nuevo e inaceptable .
-Si presiono las teclas en un archivo .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 el aplicación para que funcione, por lo que mis claves serían visibles en la distribución de la aplicación en lugar de la distribución de origen. 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?
¿Qué lenguaje de programación está utilizando? –
En este caso estoy usando C# – callingshotgun