Descripción general de la API de App Identity para PHP 5

La API de App Identity permite que una aplicación descubra su ID de aplicación (también llamada 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 el entorno de ejecución.

Obtén el ID del proyecto

El ID del proyecto se puede encontrar con el método AppIdentityService::getApplicationId().

Obtén 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 hacerlo con el método AppIdentityService::getDefaultVersionHostname().

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

Si quieres determinar la identidad de la aplicación de App Engine que envía una 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 del proyecto de la aplicación solicitante, si está presente.

Requisitos:

  • Solo las llamadas realizadas al dominio appspot.com de tu app contendrán el encabezado X-Appengine-Inbound-Appid. Las llamadas a dominios personalizados no contienen el encabezado.
  • Tus solicitudes deben configurarse para no seguir redireccionamientos.

En el controlador de tu aplicación, puedes verificar el ID entrante si lees el encabezado X-Appengine-Inbound-Appid y lo comparas con una lista de ID permitidos para realizar solicitudes.

Confirma 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 se pueden usar para confirmar que el origen de una solicitud es la aplicación en sí. El método getAccessToken() muestra un token de acceso para un alcance o lista de alcances. Luego, este token se puede configurar en los encabezados HTTP de una llamada para identificar la aplicación que realiza la llamada.

En el ejemplo siguiente, se muestra cómo usar la API de App Identity para recuperar los contactos del Calendario de Google con OAuth.
// Retrieves Google Calendar contacts using OAuth

use google\appengine\api\app_identity\AppIdentityService;

function setAuthHeader() {
  $access_token = AppIdentityService::getAccessToken('https://www.google.com/m8/feeds');
  return [sprintf('Authorization: OAuth %s', $access_token['access_token'])];
}

$get_contacts_url = 'https://www.google.com/m8/feeds/contacts/default/full';
$headers = setAuthHeader();
$opts = [
  'http' => [
    'header' => implode("\r\n", $headers),
  ],
];

$context = stream_context_create($opts);

$response = file_get_contents($get_contacts_url, false, $context);

$xml = simplexml_load_string($response);

$email = $xml->author->email;
$service_account = AppIdentityService::getServiceAccountName();

if (strcmp($email, $service_account) != 0) {
  die(sprintf('%s does not match the service account name %s.',
              $email,
              $service_account));
}

Ten en cuenta que el nombre de la cuenta de servicio representa la identidad de la aplicación, que suele ser applicationid@appspot.gserviceaccount.com. Puedes obtener el valor exacto con el método getServiceAccountName(). Para los servicios que ofrecen LCA, puedes otorgar acceso a la aplicación brindando acceso a esta cuenta.

Cómo confirmar la identidad a servicios de terceros

El token que genera getAccessToken() 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. El método signForApp() firmará bytes a través de una clave privada única para tu aplicación, mientras que el método getPublicCertificates() mostrará los certificados que se pueden usar 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 espacio de almacenamiento máximo de este depósito es de 5 GB, pero lo puedes aumentar si habilitas la facturación para tu aplicación. Esto dará como resultado un depósito de pago.

Para obtener el nombre del depósito predeterminado, llama a CloudStorageTools::getDefaultGoogleStorageBucketName. De forma opcional, usa el valor #default# como el nombre del depósito. #default# se reemplazará de forma automática en el entorno de ejecución por el nombre predeterminado del depósito de la aplicación.

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

Enviar comentarios sobre...

Entorno estándar de App Engine para PHP 5