Funciones de Go de identidad de la app

La API de Identidad de la aplicación permite que una aplicación descubra su ID de aplicación (también llamado ID del proyecto). A través del ID, una aplicación de App Engine puede confirmar su identidad a otras aplicaciones de App Engine, a las API de Google, y a las aplicaciones y servicios de terceros. El ID de aplicación también se puede usar para generar una URL o dirección de correo electrónico, o tomar una decisión en tiempo de ejecución.

Cómo obtener el ID de aplicación

El ID de aplicación se puede encontrar con la función appengine.AppID.

Cómo obtener el nombre de host de la aplicación

De forma predeterminada, las aplicaciones de App Engine se entregan desde las URL en el formato http://<your_app_id>.appspot.com, en donde el ID de aplicación es parte del nombre de host. Si una aplicación se entrega desde un dominio personalizado, tal vez sea necesario recuperar todo el componente del nombre de host. Puedes hacer esto con la función appengine.DefaultVersionHostname.

Cómo confirmar la identidad a otras aplicaciones de App Engine

Si deseas determinar la identidad de la aplicación de App Engine que realiza la solicitud a tu aplicación, puedes usar el encabezado de solicitud X-Appengine-Inbound-Appid. El servicio URLFetch agrega este encabezado a la solicitud y el usuario no puede modificarlo, por lo que indica de manera segura el ID de aplicación solicitante, si está presente.

En el controlador de la aplicación, puedes verificar el ID entrante leyendo el encabezado X-Appengine-Inbound-Appid y comparándolo con una lista de ID permitidos para realizar solicitudes.

Cómo confirmar la identidad a las API de Google

Las API de Google usan el protocolo OAuth 2.0 para la autenticación y la autorización. La API de Identidad de la aplicación puede crear tokens OAuth que pueden usarse para confirmar que el origen de una solicitud es la aplicación en sí. La función appengine.AccessToken muestra un token de acceso para un alcance o lista de alcances. Este token se puede configurar en los encabezados HTTP de una llamada para identificar la aplicación que realiza la llamada.

El siguiente ejemplo muestra cómo usar la API de Identidad de la aplicación para realizar una llamada REST a la API de Reductor de URL de Google.
import (
	"context"
	"net/http"

	"google.golang.org/appengine/urlfetch"

	"golang.org/x/oauth2"
	"golang.org/x/oauth2/google"
	urlshortener "google.golang.org/api/urlshortener/v1"
)

// shortenURL returns a short URL which redirects to the provided url,
// using Google's urlshortener API.
func shortenURL(ctx context.Context, url string) (string, error) {
	transport := &oauth2.Transport{
		Source: google.AppEngineTokenSource(ctx, urlshortener.UrlshortenerScope),
		Base:   &urlfetch.Transport{Context: ctx},
	}
	client := &http.Client{Transport: transport}

	svc, err := urlshortener.New(client)
	if err != nil {
		return "", err
	}

	resp, err := svc.Url.Insert(&urlshortener.Url{LongUrl: url}).Do()
	if err != nil {
		return "", err
	}
	return resp.Id, nil
}

Ten en cuenta que la identidad de la aplicación está representada por el nombre de la cuenta de servicio, que suele ser applicationid@appspot.gserviceaccount.com. Puedes configurar el valor exacto con la función appengine.ServiceAccount. Para los servicios que ofrecen LCA, puedes otorgar acceso a la aplicación si se lo otorgas a esta cuenta.

Cómo confirmar la identidad a servicios de terceros

El token que genera AccessToken solo funciona en los servicios de Google. Sin embargo, puedes usar la tecnología de firma subyacente para confirmar la identidad de tu aplicación a otros servicios. La función appengine.SignBytes firmará bytes mediante una clave privada única para tu aplicación, mientras que la función appengine.PublicCertificates mostrará los certificados que pueden usarse para validar la firma.

Cómo obtener el nombre predeterminado del depósito de Cloud Storage

Cada aplicación puede tener un depósito de Cloud Storage predeterminado, que incluye 5 GB de almacenamiento gratuito y una cuota gratuita para operaciones de E/S. El almacenamiento máximo de este depósito es de 5 GB, el cual puedes aumentar cuando habilites la facturación para tu aplicación. Esto dará como resultado un depósito pago.

Llama a DefaultBucketName para obtener el nombre del depósito predeterminado.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Entorno estándar de App Engine para Go