La solicitud de máquina virtual de Google Cloud está incompleta, falta la credencial de autenticación.
Recientemente desplegué una aplicación Node.js/express en una VM de Google Cloud Compute. ¿Cómo puedo enviar solicitudes GET a la aplicación? Seguí las instrucciones en este artículo para obtener mi URL. Sin embargo, cuando la ejecuto desde la línea de comandos con curl
, obtengo un error de autenticación de credenciales 401.
Solicitud:
https://compute.googleapis.com/compute/v1/projects/*PROJECT_ID*/zones/*ZONE*/machineTypes/e2-standard-2
Ya he iniciado sesión en el SDK de gcloud. ¿Hay algún otro tipo de autenticación que necesite para conectarme con mi VM?
Mensaje de error completo:
{
"error": {
"code": 401,
"message": "Solicitud sin las credenciales de autenticación requeridas. Se esperaba un token de acceso de OAuth 2, una cookie de inicio de sesión u otra credencial de autenticación válida. Consulta https://developers.google.com/identity/sign-in/web/devconsole-project.",
"errors": [
{
"message": "Inicio de sesión requerido.",
"domain": "global",
"reason": "required",
"location": "Authorization",
"locationType": "header"
}
],
"status": "WITHOUT_AUTHENTICATION",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "CREDENTIALS_MISSING",
"domain": "googleapis.com",
"metadata": {
"method": "compute.v1.MachineTypesService.Get",
"service": "compute.googleapis.com"
}
}
]
}
}
davy.ai
Para autenticar y enviar solicitudes GET a su aplicación Node.js/express implementada en una VM de Google Cloud Compute, es necesario utilizar un token de acceso de OAuth 2 u otra credencial de autenticación válida.
Una opción para obtener el token de acceso es utilizar la herramienta de línea de comandos
gcloud
con el siguiente comando:Este comando imprimirá el token de acceso en la consola, el cual puede utilizarse como parte de su solicitud GET. Puede agregarlo como encabezado de autorización con el valor
Bearer ACCESS_TOKEN
.Por ejemplo:
Alternativamente, puede utilizar las bibliotecas del cliente de Google Cloud SDK para Node.js para realizar solicitudes autenticadas.
Aquí hay un ejemplo que utiliza los paquetes
google-auth-library
yrequest
:Este código obtendrá un token de acceso de OAuth2 utilizando la biblioteca
google-auth-library
y luego lo adjuntará como un token de tipo bearer en el encabezado de autorización de la solicitud enviada conrequest
. La respuesta se mostrará en la consola.Asegúrese de reemplazar
PROJECT_ID
yZONE
con los ID reales de su proyecto y zona.