Descripción general de la API de usuarios de Go

La API de usuarios le permite a una aplicación:

  • Detectar si el usuario actual ha accedido
  • Redireccionar al usuario a la página de acceso correcta
  • Solicitar que el usuario de la aplicación cree una Cuenta de Google nueva si aún no lo ha hecho.

Cuando un usuario ingresa a la app, esta 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 (o "usuario admin"), lo que facilita la implementación de áreas de la aplicación solo disponibles para administradores. Si deseas ver el contenido del paquete de user, consulta la referencia del paquete de user.

Autenticación de usuario en Go 1.9

En el siguiente ejemplo, se recibe a un usuario que accedió a la aplicación con un mensaje personalizado y un vínculo para salir. Si el usuario no ha accedido, la aplicación le ofrece un vínculo a la página de acceso de Cuentas de Google.

import (
	"fmt"
	"net/http"

	"google.golang.org/appengine"
	"google.golang.org/appengine/user"
)

func welcome(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-type", "text/html; charset=utf-8")
	ctx := appengine.NewContext(r)
	u := user.Current(ctx)
	if u == nil {
		url, _ := user.LoginURL(ctx, "/")
		fmt.Fprintf(w, `<a href="%s">Sign in or register</a>`, url)
		return
	}
	url, _ := user.LogoutURL(ctx, "/")
	fmt.Fprintf(w, `Welcome, %s! (<a href="%s">sign out</a>)`, u, url)
}

Configurar el ingreso y acceso de administrador con app.yaml

Si tienes páginas que requieren que el usuario se identifique para acceder, puedes aplicarlo en el archivo app.yaml.

La configuración del controlador también puede requerir que el usuario sea un administrador de la aplicación registrado, es decir, que tenga función básica de Lector, Editor o Propietario, o la función predeterminada de administrador de la aplicación de App Engine. Esto facilita la compilación de secciones del sitio solo accesibles para administradores, sin tener que implementar un mecanismo de autorización separado.

Si quieres aprender a configurar la autenticación para URL, consulta cómo solicitar acceso o estado de administrador en la referencia de app.yaml.

OAuth en Go

Además de los modos de autenticación de usuarios estándar, los usuarios pueden identificarse en la aplicación a través de OAuth. OAuth es un protocolo que permite a los usuarios otorgar permisos limitados a terceros para que accedan a una aplicación web en su nombre, sin compartir sus credenciales (nombre de usuario y contraseña) con el tercero. Para obtener más información sobre la API de OAuth, incluida la interacción que requieren los clientes, consulta la documentación de OAuth.

Ten en cuenta que la identificación de usuarios con OAuth es completamente independiente de los modos de autenticación de usuarios estándar. Por ejemplo, las páginas marcadas con login: required o login: admin no se cargarán si el usuario solo se autenticó a través de OAuth.

A continuación, se muestra un ejemplo de acceso a la información de un usuario de OAuth en un controlador de solicitudes de Go:

import (
	"fmt"
	"net/http"

	"google.golang.org/appengine"
	"google.golang.org/appengine/user"
)

func welcomeOAuth(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	u, err := user.CurrentOAuth(ctx, "")
	if err != nil {
		http.Error(w, "OAuth Authorization header required", http.StatusUnauthorized)
		return
	}
	if !u.Admin {
		http.Error(w, "Admin login only", http.StatusUnauthorized)
		return
	}
	fmt.Fprintf(w, `Welcome, admin user %s!`, u)
}

Opciones de autenticación

Tu app puede autenticar usuarios con una de estas opciones:

  • Una Cuenta de Google
  • Una cuenta en tu dominio de G Suite

Elige una opción de autenticación

Después de crear tu app, puedes elegir la opción de autenticación que quieres usar. Según la configuración predeterminada, la app usará Cuentas de Google para la autenticación. Si deseas elegir otra opción, como el dominio de G Suite, dirígete a la página de configuración de tu proyecto en Google Cloud Platform Console y haz clic en Editar. En el menú desplegable Autenticación de Google, selecciona el tipo de autenticación deseado y haz clic en Guardar.

Acceso y salida

Una aplicación puede detectar si un usuario accedió a tu app con la opción de autenticación que elegiste para ella. Si el usuario no accedió, la app puede dirigirlo a Cuentas de Google para que acceda o cree una Cuenta de Google nueva. La app obtiene la URL de la página de acceso con una llamada a un método de la API de usuarios y puede mostrar esta URL como un vínculo o emitir un redireccionamiento HTTP hacia la URL cuando el usuario visita una página que requiere autenticación.

Si tu app usa Cuentas de Google o G Suite para la autenticación, el nombre de tu aplicación aparece en la página de acceso cuando el usuario ingresa a ella. El nombre que aparece es el nombre de aplicación que especificas cuando la registras. Puedes cambiar el nombre de la aplicación en el campo Nombre de producto que se muestra a los usuarios en la página Credenciales de Google Cloud Platform Console.

Una vez que el usuario accede o crea una Cuenta de Google, se lo redirecciona de vuelta a tu aplicación. La app proporciona la URL de redireccionamiento al método que genera la URL de acceso.

La API de usuarios incluye un método que genera una URL para salir de la app. La URL de cierre de sesión anula la autenticación del usuario de la app y, luego, lo redirecciona a la URL de la aplicación sin mostrar nada.

Un usuario no accede a una app hasta que esta le solicita que lo haga y el usuario ingresa la dirección de correo electrónico de su cuenta y la contraseña. Esto se aplica incluso si el usuario ha accedido a otras aplicaciones con su Cuenta de Google.

Accede a la información de la cuenta

Cuando un usuario ingresa a la app, esta puede acceder a la dirección de correo electrónico de la cuenta con cada solicitud que el usuario envía a la aplicación. La app también puede acceder al ID que identifica al usuario de forma única, incluso si el usuario cambia la dirección de correo electrónico de su cuenta.

La app también puede determinar si el usuario actual es un administrador. Un usuario admin es cualquier usuario que tenga la función básica de visualizador, editor o propietario, o que tenga la función predeterminada de administrador de apps de App Engine. Puedes usar esta característica para compilar características administrativas en la app, incluso si no autenticas a otros usuarios. Las API de Go, Java, PHP y Python facilitan la configuración de URL como "exclusivo para administradores".

Cuentas de Google y el servidor de desarrollo

El servidor de desarrollo simula el sistema de Cuentas de Google con una pantalla de acceso ficticia. Cuando tu aplicación llama a la API de usuarios para obtener la URL de la página de acceso, la API muestra la URL de un servidor de desarrollo especial que solicita una dirección de correo electrónico, pero no la contraseña. Puedes ingresar cualquier dirección de correo electrónico y la app se comportará como si hubieses accedido con una cuenta asociada a esa dirección.

La pantalla de acceso ficticia también muestra una casilla de verificación que indica si la cuenta ficticia es de administrador; es decir, si tiene la función básica de visualizador, editor o propietario, o la función predeterminada de administrador de la aplicación de App Engine. Si marcas esta casilla, la app se comportará como si hubieses accedido con una cuenta de administrador.

Del mismo modo, la API de usuarios muestra una URL de cierre de sesión que cancela el acceso ficticio.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Go