En esta página, se describen algunas prácticas recomendadas generales para la integración con OAuth 2.0. Considera estas prácticas recomendadas, además de cualquier orientación específica para tu tipo de aplicación y plataforma de desarrollo. Consulta también el asesoramiento para preparar tu app para producción y las políticas de OAuth 2.0 de Google.
Administra las credenciales de cliente de forma segura
Las credenciales de cliente de OAuth identifican la identidad de tu app y deben manejarse con cuidado. Solo almacena estas credenciales en un almacenamiento seguro, por ejemplo, con un administrador de secretos como Google Cloud Secret Manager. No codifiques de forma rígida las credenciales, no las confirmes en un repositorio de código ni las publiques de forma pública.
Cómo controlar los tokens de usuario de forma segura
Los tokens de usuario incluyen tanto los tokens de actualización como los tokens de acceso que usa tu aplicación. Almacena los tokens de forma segura en reposo y nunca los transmitas como texto sin formato. Usa un sistema de almacenamiento seguro adecuado para tu plataforma, como Keystore en Android, Keychain Services en iOS y macOS, o Credential Locker en Windows.
Revoca los tokens en cuanto ya no los necesites y bórralos de forma permanente de tus sistemas.
Además, considera estas prácticas recomendadas para tu plataforma:
- En el caso de las aplicaciones del servidor que almacenan tokens para muchos usuarios, encripta los tokens en reposo y asegúrate de que tu almacén de datos no sea accesible públicamente a través de Internet.
- En el caso de las apps nativas para computadoras, se recomienda usar el protocolo de clave de prueba para el intercambio de código (PKCE) para obtener códigos de autorización que se puedan intercambiar por tokens de acceso.
Cómo controlar la revocación y el vencimiento de tokens de actualización
Si tu app solicitó un token de actualización para el acceso sin conexión, también debes controlar su invalidación o vencimiento. Los tokens se pueden invalidar por diferentes motivos, por ejemplo, porque vencieron o porque el usuario o un proceso automatizado revocaron el acceso de tus apps. En este caso, considera cuidadosamente cómo debería responder tu aplicación, lo que incluye solicitarle al usuario que acceda la próxima vez o limpiar sus datos. Para recibir notificaciones sobre la revocación de tokens, realiza la integración con el servicio de Protección integral de la cuenta.
Usa la autorización incremental
Usa la autorización incremental para solicitar los alcances de OAuth adecuados cuando tu aplicación necesite la funcionalidad.
No debes solicitar acceso a los datos cuando el usuario se autentica por primera vez, a menos que sea esencial para la funcionalidad principal de tu app. En cambio, solicita solo los permisos específicos que se necesiten para una tarea, siguiendo el principio de seleccionar los permisos más pequeños y limitados posibles.
Siempre solicita permisos en contexto para ayudar a los usuarios a comprender por qué tu app solicita acceso y cómo se usarán los datos.
Por ejemplo, tu aplicación podría seguir este modelo:
- El usuario se autentica con tu app.
- No se solicitan permisos adicionales. La app proporciona funciones básicas para que el usuario explore y use funciones que no requieren datos ni acceso adicionales.
- El usuario selecciona una función que requiere acceso a datos adicionales.
- Tu aplicación realiza una solicitud de autorización para este permiso de OAuth específico que se requiere para esta función. Si esta función requiere varios permisos, sigue las prácticas recomendadas que se indican a continuación.
- Si el usuario rechaza la solicitud, la app inhabilita la función y le brinda contexto adicional para que vuelva a solicitar acceso.
Cómo controlar el consentimiento para varios permisos
Cuando solicitas varios permisos a la vez, es posible que los usuarios no otorguen todos los permisos de OAuth que solicitaste. Tu app debe controlar el rechazo de los permisos inhabilitando la funcionalidad pertinente.
Si la funcionalidad básica de tu app requiere varios permisos, explícale esto al usuario antes de solicitar su consentimiento.
Solo puedes volver a solicitarle al usuario que realice la acción una vez que haya indicado claramente su intención de usar la función específica que requiere el alcance. Tu app debe proporcionar al usuario contexto y justificación relevantes antes de solicitar permisos de OAuth.
Debes minimizar la cantidad de permisos que tu app solicita a la vez. En su lugar, utiliza la autorización incremental para solicitar permisos en el contexto de las funciones y la funcionalidad.
Usa navegadores seguros
En la Web, las solicitudes de autorización de OAuth 2.0 solo se deben realizar desde navegadores web con todas las funciones. En otras plataformas, asegúrate de seleccionar el tipo de cliente de OAuth correcto y de integrar OAuth según corresponda a tu plataforma. No redirecciones la solicitud a través de entornos de navegación incorporados, incluidas las WebView en plataformas para dispositivos móviles, como WebView en Android o WKWebView en iOS. En su lugar, utiliza bibliotecas de OAuth nativas o Acceder con Google para tu plataforma.
Creación y configuración manuales de clientes de OAuth
Para evitar abusos, los clientes de OAuth no se pueden crear ni modificar de forma programática. Debes usar la consola de Google Developers para confirmar explícitamente las condiciones del servicio, configurar tu cliente de OAuth y prepararte para la verificación de OAuth.
Para los flujos de trabajo automatizados, considera usar cuentas de servicio.
Quita los clientes de OAuth que no se usen
Audita periódicamente tus clientes de OAuth 2.0 y borra de forma proactiva los que tu aplicación ya no necesite o los que hayan quedado obsoletos. Dejar configurados clientes sin usar representa un riesgo de seguridad potencial, ya que el cliente se puede usar de forma inadecuada si alguna vez se vulneran tus credenciales de cliente.
Para mitigar aún más los riesgos de los clientes no utilizados, los clientes de OAuth 2.0 que hayan estado inactivos durante seis meses se borran automáticamente.
La práctica recomendada es no esperar a que se borren automáticamente los clientes, sino quitarlos de forma proactiva. Esta práctica minimiza la superficie de ataque de tu aplicación y garantiza una buena higiene de seguridad.