Compartir a través de


Parte 3: Implementación de API de terceros de ejemplo

Parte anterior: Requisitos de autenticación

En nuestro escenario de ejemplo, la aplicación principal consume una API de terceros protegida con una clave de acceso. En esta sección se muestra la API mediante Azure Functions, pero se aplican los mismos principios independientemente de cómo o dónde se implemente la API, tanto si hospeda la aplicación en otro proveedor de nube como en un servidor web tradicional.

El aspecto clave es que las solicitudes de cliente al punto de conexión protegido deben incluir la clave de acceso, que la aplicación debe administrar de forma segura. En esta sección se proporciona información general sobre cómo implementar dicha API mediante Azure Functions, pero puede adaptar los principios a sus necesidades específicas.

Implementación de API de terceros de ejemplo

La API de terceros de ejemplo es un punto de conexión simple que devuelve un número aleatorio entre 1 y 999. La API está protegida con una clave de acceso, que se debe proporcionar en la solicitud para acceder al punto de conexión. Con fines de demostración, esta API se implementa en el punto de conexión, https://msdocs-example-api.azurewebsites.net/api/RandomNumber. Sin embargo, para llamar a la API, debe proporcionar la clave d0c5atM1cr0s0ft de acceso en un ?code= parámetro de dirección URL o en una 'x-functions-key' propiedad del encabezado HTTP. Por ejemplo, después de implementar la aplicación y la API, pruebe esta dirección URL en un explorador o curl: https://msdocs-example-api.azurewebsites.net/api/RandomNumber?code=d0c5atM1cr0s0ft.

Si la clave de acceso es válida, el punto de conexión devuelve una respuesta JSON que contiene una sola propiedad, "value", cuyo valor es un número comprendido entre 1 y 999, como {"value": 959}.

El punto de conexión se implementa en Python y se implementa en Azure Functions. El código es el siguiente:

import logging
import random
import json

import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('RandomNumber invoked via HTTP trigger.')

    random_value = random.randint(1, 1000)
    dict = { "value" : random_value }
    return func.HttpResponse(json.dumps(dict))

En el repositorio de ejemplo, este código se encuentra en third_party_api/RandomNumber/__init__.py. La carpeta RandomNumber proporciona el nombre de la función y __init__.py contiene el código. Otro archivo de la carpeta, function.json, describe cuándo se desencadena la función. Otros archivos de la carpeta principal third_party_api proporcionan detalles para la aplicación de funciones de Azure que hospeda la propia función.

Para implementar el código, el script de aprovisionamiento del ejemplo realiza los pasos siguientes:

  1. Cree una cuenta de almacenamiento de respaldo para Azure Functions utilizando el comando de la CLI de Azure, destinado a administrar el estado y las operaciones internas.

  2. Cree una aplicación de Azure Functions con el comando de la CLI de Azure, az function app create.

  3. Después de esperar 60 segundos para que el host se aprovisione por completo, implemente el código mediante el comando Azure Functions Core Tools , func azure functionapp publish.

  4. Asigne la clave de acceso, d0c5atM1cr0s0ft, a la función . (Consulte Aseguramiento de Azure Functions para obtener información sobre las claves de función).

    En el script de aprovisionamiento, este paso se realiza mediante el comando az functionapp function keys set de la CLI de Azure.

    Los comentarios se incluyen para mostrar cómo realizar este paso a través de una llamada api REST a Functions Key Management API si lo desea. Para llamar a esa API REST, primero debe realizarse otra llamada a la API REST para recuperar la clave maestra de la aplicación de funciones.

También puede asignar claves de acceso a través de Azure Portal. En la página de la aplicación de Funciones, seleccione Funciones y, a continuación, seleccione la función específica que desea proteger, la cual está denominada RandomNumber en este ejemplo. En la página de la función, seleccione Claves de función para abrir la página donde puede crear y administrar estas claves.