Google Code disponible en: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
Las aplicaciones App Engine pueden autenticar usuarios a través de Cuentas de Google. Una aplicación puede detectar si el usuario actual ha accedido a través de una cuenta de Google y puede redirigirlo a la página de acceso de Cuentas de Google para que acceda a su cuenta o para que cree una cuenta nueva. Mientras un usuario se encuentre conectado a la aplicación, ésta puede acceder a la dirección de correo electrónico del usuario. La aplicación también puede detectar si el usuario actual es un administrador, lo que facilitará la implementación de áreas exclusivas de administradores en la aplicación.
La integración de Cuentas de Google es una función opcional de App Engine. Si no deseas integrar tu aplicación con Cuentas de Google, siempre puedes crear tu propio sistema para llevar a cabo la autenticación de usuarios. El servicio de Cuentas de Google ofrece un mecanismo de autenticación sólido y fácil de utilizar que cuenta con un avanzado conjunto de funciones y millones de usuarios activos.
Puedes comprobar si el usuario ha accedido con una cuenta de Google y obtener la dirección de correo electrónico del usuario con el API servlet estándar a través del método getUserPrincipal() del objeto de solicitud. Puedes utilizar el API del servicio de usuarios para generar direcciones URL de acceso y de salida.
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
UserService userService = UserServiceFactory.getUserService();
String thisURL = request.getRequestURI();
if (request.getUserPrincipal() != null) {
response.getWriter().println("<p>Hello, " +
request.getUserPrincipal().getName() +
"! You can <a href=\"" +
userService.createLogoutURL(thisURL) +
"\">sign out</a>.</p>");
} else {
response.getWriter().println("<p>Please <a href=\"" +
userService.createLoginURL(thisURL) +
"\">sign in</a>.</p>");
}
}
}
El API del servicio de usuarios puede devolver información del usuario actual como un objeto User. Los objetos User se pueden almacenar como un valor de propiedad en el almacén de datos.
Si existen páginas a las que el usuario no debería acceder a menos que iniciara 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 redirige al usuario a la página de acceso de Cuentas de Google de forma automática y, a continuación, vuelve a dirigir al usuario a la URL después de haber iniciado sesión o haberse registrado correctamente.
Una restricción de seguridad también puede requerir que el usuario sea un administrador registrado de la aplicación. Esto facilita la implementación de secciones exclusivas para el administrador en el sitio, sin tener que implementar un mecanismo de autorización independiente.
Para obtener más información sobre cómo establecer restricciones de seguridad para direcciones URL, consulta el Descriptor de implementación: seguridad y autenticación.
Una aplicación puede detectar si un usuario ha accedido a la aplicación a través de una cuenta de Google. Si el usuario no ha accedido, la aplicación puede dirigirle al servicio de Cuentas de Google para que acceda o para que cree una cuenta de Google nueva. La aplicación obtiene la URL de la pantalla de acceso del servicio de Cuentas de Google a través de la ejecución de un método del API de usuarios. La aplicación puede mostrar esta URL como un enlace o puede enviar una redirección HTTP a la URL cuando el usuario visite una página que requiera autenticación.
La pantalla de acceso del servicio de Cuentas de Google informa al usuario de que está accediendo a tu aplicación por medio del nombre de aplicación que seleccionaste cuando te registraste en la aplicación. Puedes cambiar tu nombre de aplicación en la sección "Configuración de aplicaciones" de la consola de administración.
Una vez que el usuario ha accedido a su cuenta de Google o ha creado una cuenta nueva, se le redirigirá a la aplicación. La aplicación proporciona la URL de redireccionamiento al método que genera la URL de acceso.
El API de usuarios también incluye un método para generar una URL para salir de la aplicación. La URL de salida desautentica al usuario de la aplicación y, a continuación, le redirige de vuelta a la URL de la aplicación sin mostrar nada.
Un usuario no ha accedido a una aplicación hasta que la aplicación le solicita a ésta que lo haga e introduce su dirección de correo electrónico y contraseña de la cuenta. Esto es así incluso si el usuario ha accedido a otras aplicaciones a través de su cuenta de Google.
Mientras un usuario está conectado a una aplicación, ésta puede acceder a la dirección de correo electrónico de la cuenta para todas las solicitudes que el usuario realice a la aplicación.
La aplicación también puede determinar si el usuario actual es un administrador (un "desarrollador") de la aplicación. Puedes utilizar esta función para crear funciones administrativas para la aplicación, incluso si no utilizas el servicio de Cuentas de Google para autenticar a otros usuarios. Las API Java y Python hacen más fácil la configuración de URL como "Administrador exclusivo".
El almacén de datos de App Engine admite el almacenamiento de objetos User devueltos como un tipo de valor especial por el API de Cuentas de Google. Por el momento, los valores User no se comportan como identificadores estables para los usuarios. Si una aplicación almacena un valor User y el usuario cambia su dirección de correo electrónico, el valor User no volverá a hacer referencia a un usuario válido. En la práctica, los usuarios no suelen cambiar sus direcciones de correo electrónico de sus cuentas de Google, pero cabe destacar el diseño en este caso excepcional. Una futura actualización del servicio podría actualizar automáticamente los valores User en el almacén de datos. Hasta entonces, un ejemplo a seguir es no confiar en el valor User en cuanto a estabilidad.
El API Java actualmente no expone una única ID de usuario más allá de la dirección de correo electrónico.
El servidor de desarrollo simula el sistema de Cuentas de Google a través de una pantalla de acceso simulada. Cuando tu aplicación ejecuta el API de usuarios para obtener la URL de la pantalla de acceso, el API devuelve una URL especial del servidor de desarrollo que pide una dirección de correo electrónico, pero no una contraseña. Puedes escribir cualquier dirección de correo electrónico en esta petición y la aplicación se comportará como si hubieras accedido a través de una cuenta con dicha dirección.
La pantalla de acceso simulada también incluye una casilla de verificación que indica si la cuenta simulada pertenece a un administrador. Si seleccionas esta casilla, la aplicación se comportará como si hubieras accedido a través de una cuenta de administrador.
De forma similar, el API de usuarios devuelve una URL de salida que cancela el acceso simulado.