implement - oauth2 authorization code flow
¿Realmente no puedo enviar código abierto con Client ID? (2)
El 5 de noviembre de 2014, Google realizó algunos cambios en los términos de servicio de la API .
Al igual que usted, tuve un problema con la siguiente línea.
Pedir a los desarrolladores que hagan los esfuerzos razonables para mantener sus claves privadas privadas y no incrustarlas en proyectos de código abierto.
Tengo varios proyectos de código abierto en GitHub, básicamente son tutoriales para usar las API de Google. Algunas de las API todavía están en fase beta y lleva tiempo acceder a la versión beta. Tenía la identificación de mi cliente incrustada en mis proyectos para que mis usuarios pudieran probar las aplicaciones.
Ahora tengo algunos contactos en Google, así que esperaba poder obtener algún tipo de dispensación aquí. Pude rastrear al autor del cambio de servicio ofensivo anterior Dan Ciruli y le envié un correo electrónico.
Mi correo electrónico era bastante log, puedes leerlo aquí: Cambios de servicio
Para resumir, no, no puede publicar su identificación de cliente con su proyecto de código abierto. Aquí está el correo electrónico de Dan, en el que se explica por qué.
Sin embargo, les está permitiendo "suplantarlo" a los ojos de Google. Si nuestros sistemas de abuso detectan abusos (por ejemplo, si alguien intentara utilizar uno de nuestros servicios con DoS), usted corre el riesgo de que cancelen su cuenta debido a eso (y tenga en cuenta que no solo cortarían el acceso al clave, cerrarían su cuenta de consola). Además, se le ha otorgado acceso de la lista blanca a las API que no están disponibles para el público en general (y, con toda probabilidad, es necesario que acepte las Condiciones del servicio por separado) y se comparte el acceso a cualquier persona que lo desee. No hay duda de que es una violación de esos términos. Lamentamos no tener la respuesta que está buscando, pero las claves son una forma de decir quién llama a nuestros servicios.
Eso es solo parte de su correo electrónico de nuevo a mí. Puedes leer la publicación completa en el enlace de arriba. Entonces, si les está dando el código fuente y pueden ver la identificación del cliente. Sus usuarios deberán crear su propio proyecto en la consola de Google Cloud. No hay forma de evitar esto.
Espero que esto haya ayudado.
Las credenciales de desarrollador (tales como contraseñas, claves e ID de cliente) están destinadas a ser utilizadas por usted e identificar su API Client. Deberá mantener la confidencialidad de sus credenciales y hacer los esfuerzos razonables para evitar y desalentar a otros Clientes API para que no utilicen sus credenciales. Las credenciales del desarrollador no pueden integrarse en proyectos de código abierto.
( https://developers.google.com/terms/ , mi énfasis)
¿Esto significa que mi cliente de línea de comandos de Open Source Drive necesita obligar a todos los usuarios de mi software a configurar un nuevo proyecto en la consola de Google Cloud? ¿Hay alguna opción mejor?
No es como si fuera difícil extraer la identificación del cliente y el cliente "secreto" de un código abierto, entonces ¿por qué la distinción?
"Instalar aplicaciones" Los ID y secretos de los clientes no son secretos, y la documentación de Google parece estar de acuerdo:
El proceso da como resultado una ID de cliente y, en algunos casos, un secreto de cliente, que usted incorpora en el código fuente de su aplicación. ( En este contexto, el secreto del cliente obviamente no se trata como un secreto ) .
( https://developers.google.com/accounts/docs/OAuth2 , nuevamente mi énfasis)
Hay una mejor opción y se llama OAuth 2.0 Dynamic Client Registration. Sin embargo, todavía es un trabajo en progreso: https://tools.ietf.org/html/draft-ietf-oauth-dyn-reg-21 y los proveedores pueden demorar un tiempo en adoptarlo e implementarlo.
Editar:
Es categóricamente imposible enviar secretos de autenticación con una aplicación de código abierto. [Honestamente, realmente no tiene sentido enviarlos con ninguna aplicación; es más obvio de inmediato con las aplicaciones de código abierto.]