La API Users permite que una aplicación haga lo siguiente:
- Detecta si el usuario actual ha iniciado sesión.
- Redirige al usuario a la página de inicio de sesión correspondiente para que inicie sesión.
- Pide al usuario de tu aplicación que cree una cuenta de Google si aún no tiene una.
Mientras un usuario tiene la sesión iniciada en la aplicación, esta puede acceder a su dirección de correo electrónico. La aplicación también puede detectar si el usuario actual es administrador (también llamado "usuario administrador"), lo que facilita la implementación de áreas de la aplicación exclusivas para administradores.
Autenticación de usuarios en Java 8
En el siguiente ejemplo, se saluda a un usuario que ha iniciado sesión en la aplicación con un mensaje personalizado y un enlace para cerrar sesión. Si el usuario no ha iniciado sesión, la aplicación ofrece un enlace a la página de inicio de sesión de las cuentas de Google.
Puedes comprobar si el usuario ha iniciado sesión y obtener su dirección de correo electrónico mediante la API de servlet estándar, con el método getUserPrincipal()
del objeto de solicitud. Puedes utilizar el API del servicio de usuarios para generar URL de acceso y de salida.
La API del servicio de usuarios puede devolver la información del usuario actual como un objeto User.
Aunque los objetos User se pueden almacenar como valor de propiedad en el almacén de datos, te recomendamos que no lo hagas, ya que esto incluye la dirección de correo electrónico junto con el ID único del usuario. Si un usuario cambia su dirección de correo y compara su antiguo User
almacenado con el nuevo User
, los valores no coincidirán. En su lugar, puede usar el User
valor del ID de usuario como identificador único estable del usuario.
Forzar el inicio de sesión y el acceso de administrador con web.xml
Si tienes páginas a las que el usuario no debería poder acceder a menos que haya iniciado sesión, puedes establecer una restricción de seguridad para esas páginas en el descriptor de implementación (el archivo web.xml
). Si un usuario accede a una URL con una restricción de seguridad y no ha iniciado sesión, App Engine lo redirige automáticamente a la página de inicio de sesión (para la autenticación de cuentas de Google o de Google Workspace) y, a continuación, lo dirige de nuevo a la URL después de iniciar sesión o registrarse correctamente.
Una restricción de seguridad también puede requerir que el usuario sea un administrador registrado de la aplicación, es decir, que tenga el rol de lector, editor, propietario o administrador de App Engine. De esta forma, es fácil crear secciones del sitio a las que solo puedan acceder los administradores sin tener que implementar un mecanismo de autorización independiente.
Para saber cómo definir restricciones de seguridad para URLs, consulta El descriptor de implementación: seguridad y autenticación
de web.xml
.
Opciones de autenticación
Tu aplicación puede autenticar a los usuarios con una de estas opciones:
- Una cuenta de Google
- Una cuenta de tu dominio de Google Workspace
Elegir una opción de autenticación
Después de crear tu aplicación, puedes elegir la opción de autenticación que quieras usar. De forma predeterminada, tu aplicación utilizará Cuentas de Google para la autenticación. Para elegir otra opción, como un dominio de Google Workspace, ve a la página de configuración de tu proyecto en la Google Cloud consola y haz clic en Editar. En el menú desplegable Autenticación de Google, selecciona el tipo de autenticación que quieras y, a continuación, haz clic en Guardar.
Iniciar y cerrar sesión
Una aplicación puede detectar si un usuario ha iniciado sesión en ella con la opción de autenticación que hayas elegido para tu aplicación. Si el usuario no ha iniciado sesión, la aplicación puede dirigirlo a Cuentas de Google para que inicie sesión o cree una cuenta de Google. La aplicación obtiene la URL de la página de acceso a través de la invocación de un método del API de usuarios. La aplicación puede mostrar esta URL como un enlace o emitir una redirección HTTP a la URL cuando el usuario visite una página que requiera autenticación.
Si tu aplicación usa cuentas de Google o Google Workspace para la autenticación, el nombre de tu aplicación aparecerá en la página de inicio de sesión cuando el usuario inicie sesión en tu aplicación. El nombre que se muestra es el que especificaste al registrar la aplicación. Puedes cambiar este nombre en el campo Nombre de la aplicación de la página Credenciales de la consola Google Cloud .
Una vez que el usuario haya iniciado sesión o creado una cuenta de Google, se le redirigirá de vuelta a tu aplicación. La aplicación proporciona la URL de redirección al método que genera la URL de inicio de sesión.
La API Users incluye un método para generar una URL para cerrar la sesión de la aplicación. La URL de cierre de sesión desautentica al usuario de la aplicación y, a continuación, le redirige a la URL de la aplicación sin mostrar nada.
Un usuario no inicia sesión en una aplicación hasta que la aplicación se lo pide y escribe la dirección de correo y la contraseña de su cuenta. Esto es así aunque el usuario haya iniciado sesión en otras aplicaciones con su cuenta de Google.
Acceder a la información de la cuenta
Mientras un usuario tiene la sesión iniciada en una aplicación, esta puede acceder a la dirección de correo de la cuenta para cada solicitud que el usuario haga a la aplicación. La aplicación también puede acceder a un ID de usuario que identifica al usuario de forma única, aunque cambie la dirección de correo de su cuenta.
La aplicación también puede determinar si el usuario actual es administrador de la aplicación. Un usuario administrador es cualquier usuario que tenga el rol de lector, editor, propietario o administrador de App Engine. Puedes usar esta función para crear funciones administrativas para la aplicación, aunque no autentiques a otros usuarios. Las APIs de Go, Java, PHP y Python facilitan la configuración de URLs como "solo para administradores".
Usuarios y el almacén de datos
La API del servicio Usuarios puede devolver la información del usuario actual como un objeto User.
Aunque los objetos User se pueden almacenar como valor de propiedad en el almacén de datos, te recomendamos que no lo hagas, ya que esto incluye la dirección de correo electrónico junto con el ID único del usuario. Si un usuario cambia su dirección de correo y compara su antiguo User
almacenado con el nuevo User
, los valores no coincidirán. En su lugar, utilice el User
valor del ID de usuario como identificador único estable del usuario.
Cuentas de Google y servidor de desarrollo
El servidor de desarrollo simula el sistema de cuentas de Google mediante una pantalla de inicio de sesión falsa. Cuando tu aplicación llama a la API Users para obtener la URL de la pantalla de inicio de sesión, la API devuelve una URL especial del servidor de desarrollo que solicita una dirección de correo electrónico, pero no una contraseña. Puedes escribir cualquier dirección de correo en esta petición y la aplicación se comportará como si hubieras iniciado sesión con una cuenta que tenga esa dirección.
La pantalla de inicio de sesión falsa también incluye una casilla que indica si la cuenta falsa es de administrador, es decir, si la cuenta tiene el rol de lector, editor, propietario o administrador de App Engine. Si marcas esta casilla, la aplicación se comportará como si hubieras iniciado sesión con una cuenta de administrador.
Del mismo modo, la API Users devuelve una URL de cierre de sesión que cancela el inicio de sesión falso.