Condividi tramite


Parte 3: Implementazione dell'API di terze parti di esempio

Parte precedente: Requisiti di autenticazione

Nello scenario di esempio l'applicazione principale usa un'API di terze parti protetta con una chiave di accesso. Questa sezione illustra l'API usando Funzioni di Azure, ma gli stessi principi si applicano indipendentemente da come o dove viene implementata l'API, indipendentemente dal fatto che l'applicazione venga ospitata in un altro provider di servizi cloud o in un server Web tradizionale.

L'aspetto chiave è che tutte le richieste client all'endpoint protetto devono includere la chiave di accesso, che l'app deve gestire in modo sicuro. Questa sezione offre una panoramica di come implementare tale API usando Funzioni di Azure, ma è possibile adattare i principi alle esigenze specifiche.

Esempio di implementazione dell'API di terze parti

L'API di terze parti di esempio è un endpoint semplice che restituisce un numero casuale compreso tra 1 e 999. L'API è protetta con una chiave di accesso, che deve essere fornita nella richiesta di accesso all'endpoint. A scopo dimostrativo, questa API viene distribuita nell'endpoint , https://msdocs-example-api.azurewebsites.net/api/RandomNumber. Per chiamare l'API, tuttavia, è necessario fornire la chiave d0c5atM1cr0s0ft di accesso in un ?code= parametro URL o in una 'x-functions-key' proprietà dell'intestazione HTTP. Ad esempio, dopo aver distribuito l'app e l'API, provare questo URL in un browser o curl: https://msdocs-example-api.azurewebsites.net/api/RandomNumber?code=d0c5atM1cr0s0ft.

Se la chiave di accesso è valida, l'endpoint restituisce una risposta JSON che contiene una singola proprietà, "value", il cui valore è un numero compreso tra 1 e 999, ad esempio {"value": 959}.

L'endpoint viene implementato in Python e distribuito in Funzioni di Azure. Il codice è il seguente:

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))

Nel repository di esempio questo codice è disponibile in third_party_api/RandomNumber/__init__.py. La cartella RandomNumber fornisce il nome della funzione e __init__.py contiene il codice. Un altro file nella cartella ,function.json, descrive quando viene attivata la funzione. Altri file nella cartella padre third_party_api forniscono i dettagli per l'app per le funzioni di Azure che ospita la funzione stessa.

Per distribuire il codice, lo script di provisioning dell'esempio esegue la procedura seguente:

  1. Creare un account di archiviazione di supporto per le Funzioni di Azure con il comando CLI az storage account create di Azure per la gestione dello stato e delle operazioni interne.

  2. Creare un'app Funzioni di Azure con il comando Azure CLI, az function app create.

  3. Dopo aver atteso 60 secondi per il provisioning completo dell'host, distribuire il codice usando il comando Azure Functions Core Tools, func azure functionapp publish.

  4. Assegnare la chiave di accesso, d0c5atM1cr0s0ft, alla funzione . Vedere Protezione di Funzioni di Azure per informazioni in background sulle chiavi di funzione.

    Nello script di provisioning, questo passaggio viene eseguito utilizzando il comando az functionapp function keys set dell'interfaccia della riga di comando di Azure.

    I commenti sono inclusi per mostrare come eseguire questo passaggio tramite una chiamata API REST all'API Di gestione delle chiavi di Funzioni , se necessario. Per chiamare l'API REST, è necessario prima eseguire un'altra chiamata API REST per recuperare la chiave master dell'app per le funzioni.

È anche possibile assegnare chiavi di accesso tramite il portale di Azure. Nella pagina dell'app Funzioni selezionare Funzioni, quindi selezionare la funzione specifica da proteggere( denominata RandomNumber in questo esempio). Nella pagina della funzione selezionare Chiavi funzione per aprire la pagina in cui è possibile creare e gestire queste chiavi.