Come proteggere il back-end di un'API Web con Azure Active Directory e Gestione APIHow to protect a Web API backend with Azure Active Directory and API Management

Il video che segue illustra come compilare il back-end di un'API Web e proteggerlo usando il protocollo OAuth 2.0 con Azure Active Directory e Gestione API.The following video shows how to build a Web API backend and protect it using OAuth 2.0 protocol with Azure Active Directory and API Management. Questo articolo fornisce una panoramica e informazioni aggiuntive per le procedure illustrate nel video.This article provides an overview and additional information for the steps in the video. Il video della durata di 24 minuti mostra come fare per:This 24 minute video shows you how to:

  • Compilare il back-end di un'API Web e proteggerlo con AAD - iniziando all’1:30Build a Web API backend and secure it with AAD - starting at 1:30
  • Importare l'API in Gestione API - iniziando alle 7:10Import the API into API Management - starting at 7:10
  • Configurare il portale per sviluppatori per chiamare l'API - iniziando alle 9:09Configure the Developer portal to call the API - starting at 9:09
  • Configurare un'applicazione desktop per chiamare l'API - iniziando alle 18:08Configure a desktop application to call the API - starting at 18:08
  • Configurare criteri di convalida JWT per preautorizzare le richieste - iniziando alle 20:47Configure a JWT validation policy to pre-authorize requests - starting at 20:47

Creare una directory di Azure ADCreate an Azure AD directory

Per proteggere il back-end dell'API Web con Azure Active Directory, si deve avere prima di tutto un tenant AAD.To secure your Web API backed using Azure Active Directory you must first have a an AAD tenant. Questo video usa un tenant denominato APIMDemo .In this video a tenant named APIMDemo is used. Per creare un tenant AAD, accedere al portale di Azure classico e fare clic su Nuovo->Servizi app->Active Directory->Directory->Creazione personalizzata.To create an AAD tenant, sign-in to the Azure Classic Portal and click New->App Services->Active Directory->Directory->Custom Create.

Azure Active Directory

In questo esempio viene creata una directory denominata APIMDemo con un dominio predefinito denominato DemoAPIM.onmicrosoft.com. Questa directory viene usata in tutto il video.In this example a directory named APIMDemo is created with a default domain named DemoAPIM.onmicrosoft.com. This directory is used throughout the video.

Azure Active Directory

Creare un servizio API Web protetto da Azure Active DirectoryCreate a Web API service secured by Azure Active Directory

In questo passaggio viene creato il back-end di un'API Web con Visual Studio 2013.In this step, a Web API backend is created using Visual Studio 2013. Questo passaggio del video inizia da 1:30 minuti.This step of the video starts at 1:30. Per creare un progetto back-end dell'API Web in Visual Studio, fare clic su File->Nuovo->Progetto e scegliere Applicazione Web ASP.NET dall'elenco di modelli Web.To create Web API backend project in Visual Studio click File->New->Project, and choose ASP.NET Web Application from the Web templates list. In questo video il progetto è denominato APIMAADDemo.In this video the project is named APIMAADDemo. Fare clic su OK per creare il progetto.Click OK to create the project.

Visual Studio

Fare clic su API Web nell'elenco Selezionare un modello per creare un progetto API Web.Click Web API from the Select a template list to create a Web API project. Per configurare l'autenticazione di Azure Active Directory fare clic su Modifica autenticazione.To configure Azure Directory Authentication click Change Authentication.

Nuovo progetto

Fare clic su Account aziendali e specificare il Dominio del tenant AAD.Click Organizational Accounts, and specify the Domain of your AAD tenant. In questo esempio il dominio è DemoAPIM.onmicrosoft.com. Il dominio della directory può essere rilevato dalla scheda Domini della stessa directory.In this example the domain is DemoAPIM.onmicrosoft.com. The domain of your directory can be obtained from the Domains tab of your directory.

Domini

Configurare le impostazioni nella finestra di dialogo Modifica autenticazione e fare clic su OK.Configure the desired settings in the Change Authentication dialog box and click OK.

Modifica autenticazione

Quando si fa clic su OK , Visual Studio prova a registrare l'applicazione con la directory di Azure AD e all'utente potrebbe essere richiesto di accedere da Visual Studio.When you click OK Visual Studio will attempt to register your application with your Azure AD directory and you may be prompted to sign in by Visual Studio. Accedere con un account amministrativo per la directory.Sign in using an administrative account for your directory.

Accesso a Visual Studio

Per configurare questo progetto come un'API Web di Azure, selezionare la casella Ospita nel cloud, quindi fare clic su OK.To configure this project as an Azure Web API check the box for Host in the cloud and then click OK.

Nuovo progetto

Potrebbe venire richiesto di accedere ad Azure, dopo di che si potrà configurare l'app Web.You may be prompted to sign in to Azure, and then you can configure the Web App.

Configurare

In questo esempio viene specificato un nuovo Piano di servizio app denominato APIMAADDemo.In this example a new App Service plan named APIMAADDemo is specified.

Fare clic su OK per configurare l'app Web e creare il progetto.Click OK to configure the Web App and create the project.

Aggiungere il codice al progetto API WebAdd the code to the Web API project

Il passaggio successivo del video aggiunge il codice al progetto API Web API.The next step in the video adds the code to the Web API project. Questo passaggio inizia da 4:35 minuti.This step starts at 4:35.

L'API Web in questo esempio implementa un servizio calcolatrice di base usando un modello e un controller.The Web API in this example implements a basic calculator service using a model and a controller. Per aggiungere il modello al servizio, fare clic con il pulsante destro del mouse su Modelli in Esplora soluzioni e scegliere Aggiungi, Classe.To add the model for the service, right-click Models in Solution Explorer and choose Add, Class. Assegnare alla classe il nome CalcInput e fare clic su Aggiungi.Name the class CalcInput and click Add.

Aggiungere l'istruzione using seguente all'inizio del file CalcInput.cs.Add the following using statement to the top of the CalcInput.cs file.

using Newtonsoft.Json;

Sostituire la classe generata con il codice seguente.Replace the generated class with the following code.

public class CalcInput
{
    [JsonProperty(PropertyName = "a")]
    public int a;

    [JsonProperty(PropertyName = "b")]
    public int b;
}

Fare clic con il pulsante destro del mouse su Controller in Esplora soluzioni e scegliere Aggiungi->Controller.Right-click Controllers in Solution Explorer and choose Add->Controller. Scegliere Web API 2 Controller - Empty e fare clic su Aggiungi.Choose Web API 2 Controller - Empty and click Add. Digitare CalcController come nome del controller e fare clic su Aggiungi.Type CalcController for the Controller name and click Add.

Aggiungi controller

Aggiungere l'istruzione using seguente all'inizio del file CalcController.cs.Add the following using statement to the top of the CalcController.cs file.

using System.IO;
using System.Web;
using APIMAADDemo.Models;

Sostituire la classe controller generata con il codice seguente.Replace the generated controller class with the following code. Questo codice implementa le operazioni Add, Subtract, Multiply e Divide dell'API Calculator di base.This code implements the Add, Subtract, Multiply, and Divide operations of the Basic Calculator API.

[Authorize]
public class CalcController : ApiController
{
    [Route("api/add")]
    [HttpGet]
    public HttpResponseMessage GetSum([FromUri]int a, [FromUri]int b)
    {
        string xml = string.Format("<result><value>{0}</value><broughtToYouBy>Azure API Management - http://azure.microsoft.com/apim/ </broughtToYouBy></result>", a + b);
        HttpResponseMessage response = Request.CreateResponse();
        response.Content = new StringContent(xml, System.Text.Encoding.UTF8, "application/xml");
        return response;
    }

    [Route("api/sub")]
    [HttpGet]
    public HttpResponseMessage GetDiff([FromUri]int a, [FromUri]int b)
    {
        string xml = string.Format("<result><value>{0}</value><broughtToYouBy>Azure API Management - http://azure.microsoft.com/apim/ </broughtToYouBy></result>", a - b);
        HttpResponseMessage response = Request.CreateResponse();
        response.Content = new StringContent(xml, System.Text.Encoding.UTF8, "application/xml");
        return response;
    }

    [Route("api/mul")]
    [HttpGet]
    public HttpResponseMessage GetProduct([FromUri]int a, [FromUri]int b)
    {
        string xml = string.Format("<result><value>{0}</value><broughtToYouBy>Azure API Management - http://azure.microsoft.com/apim/ </broughtToYouBy></result>", a * b);
        HttpResponseMessage response = Request.CreateResponse();
        response.Content = new StringContent(xml, System.Text.Encoding.UTF8, "application/xml");
        return response;
    }

    [Route("api/div")]
    [HttpGet]
    public HttpResponseMessage GetDiv([FromUri]int a, [FromUri]int b)
    {
        string xml = string.Format("<result><value>{0}</value><broughtToYouBy>Azure API Management - http://azure.microsoft.com/apim/ </broughtToYouBy></result>", a / b);
        HttpResponseMessage response = Request.CreateResponse();
        response.Content = new StringContent(xml, System.Text.Encoding.UTF8, "application/xml");
        return response;
    }
}

Premere F6 per compilare e verificare la soluzione.Press F6 to build and verify the solution.

Pubblicare il progetto in AzurePublish the project to Azure

In questo passaggio il progetto di Visual Studio viene pubblicato in Azure.In this step the Visual Studio project is published to Azure. Questo passaggio del video inizia da 5:45 minuti.This step of the video starts at 5:45.

Per pubblicare il progetto in Azure, fare clic con il pulsante destro del mouse sul progetto APIMAADDemo in Visual Studio e scegliere Pubblica.To publish the project to Azure, right-click the APIMAADDemo project in Visual Studio and choose Publish. Mantenere le impostazioni predefinite nella finestra di dialogo Pubblica sul Web e fare clic su Pubblica.Keep the default settings in the Publish Web dialog box and click Publish.

Pubblicazione sul Web

Concedere autorizzazioni all'applicazione del servizio back-end di Azure ADGrant permissions to the Azure AD backend service application

Nella directory di Azure AD viene creata una nuova applicazione per il servizio back-end come parte del processo di configurazione e pubblicazione del progetto API Web.A new application for the backend service is created in your Azure AD directory as part of the configuring and publishing process of your Web API project. In questo passaggio del video, che inizia da 6:13 minuti, vengono concesse autorizzazioni al back-end dell'API Web.In this step of the video, starting at 6:13, permissions are granted to the Web API backend.

Applicazione

Fare clic sul nome dell'applicazione per configurare le autorizzazioni necessarie.Click the name of the application to configure the required permissions. Passare alla scheda Configura e scorrere verso il basso fino alla sezione Autorizzazioni per altre applicazioni.Navigate to the Configure tab and scroll down to the permissions to other applications section. Fare clic sull'elenco a discesa Autorizzazioni applicazione accanto a Microsoft Azure Active Directory, selezionare la casella Lettura dati directory e fare clic su Salva.Click the Application Permissions drop-down beside Windows Azure Active Directory, check the box for Read directory data, and click Save.

Aggiungere autorizzazioni

Nota

Se Microsoft Azure Active Directory non è nell'elenco in Autorizzazioni per altre applicazioni, fare clic su Aggiungi applicazione e aggiungere la voce all'elenco.If Windows Azure Active Directory is not listed under permissions to other applications, click Add application and add it from the list.

Prendere nota dell' URI ID app che verrà usato in un passaggio successivo durante la configurazione di un'applicazione Azure AD per il portale per sviluppatori di Gestione API.Make a note of the App Id URI for use in a subsequent step when an Azure AD application is configured for the API Management developer portal.

URI ID app

Importare l'API Web in Gestione APIImport the Web API into API Management

Le API vengono configurate dal relativo portale di pubblicazione, accessibile dal Portale di Azure.APIs are configured from the API publisher portal, which is accessed through the Azure Portal. Per accedervi, fare clic su Publisher portal (Portale di pubblicazione) nella barra degli strumenti del servizio Gestione API.To reach it, click Publisher portal from the toolbar of your API Management service. Se non è ancora stata creata un'istanza del servizio Gestione API, vedere Creare un'istanza di Gestione API nell'esercitazione Gestire la prima API.If you have not yet created an API Management service instance, see Create an API Management service instance in the Manage your first API tutorial.

Portale di pubblicazione

Le operazioni possono essere aggiunte alle API manualmenteo possono essere importate.Operations can be added to APIs manually, or they can be imported. In questo video le operazioni vengono importante in formato Swagger a partire da 6:40 minuti.In this video, operations are imported in Swagger format starting at 6:40.

Creare un file denominato calcapi.json con il contenuto seguente e salvarlo nel computer.Create a file named calcapi.json with following contents and save it to your computer. Assicurarsi che l'attributo host punti al back-end dell'API Web.Ensure that the host attribute points to your Web API backend. In questo esempio viene usato "host": "apimaaddemo.azurewebsites.net" .In this example "host": "apimaaddemo.azurewebsites.net" is used.

{
  "swagger": "2.0",
  "info": {
    "title": "Calculator",
    "description": "Arithmetics over HTTP!",
    "version": "1.0"
  },
  "host": "apimaaddemo.azurewebsites.net",
  "basePath": "/api",
  "schemes": [
    "http"
  ],
  "paths": {
    "/add?a={a}&b={b}": {
      "get": {
        "description": "Responds with a sum of two numbers.",
        "operationId": "Add two integers",
        "parameters": [
          {
            "name": "a",
            "in": "query",
            "description": "First operand. Default value is <code>51</code>.",
            "required": true,
            "type": "string",
            "default": "51",
            "enum": [
              "51"
            ]
          },
          {
            "name": "b",
            "in": "query",
            "description": "Second operand. Default value is <code>49</code>.",
            "required": true,
            "type": "string",
            "default": "49",
            "enum": [
              "49"
            ]
          }
        ],
        "responses": { }
      }
    },
    "/sub?a={a}&b={b}": {
      "get": {
        "description": "Responds with a difference between two numbers.",
        "operationId": "Subtract two integers",
        "parameters": [
          {
            "name": "a",
            "in": "query",
            "description": "First operand. Default value is <code>100</code>.",
            "required": true,
            "type": "string",
            "default": "100",
            "enum": [
              "100"
            ]
          },
          {
            "name": "b",
            "in": "query",
            "description": "Second operand. Default value is <code>50</code>.",
            "required": true,
            "type": "string",
            "default": "50",
            "enum": [
              "50"
            ]
          }
        ],
        "responses": { }
      }
    },
    "/div?a={a}&b={b}": {
      "get": {
        "description": "Responds with a quotient of two numbers.",
        "operationId": "Divide two integers",
        "parameters": [
          {
            "name": "a",
            "in": "query",
            "description": "First operand. Default value is <code>100</code>.",
            "required": true,
            "type": "string",
            "default": "100",
            "enum": [
              "100"
            ]
          },
          {
            "name": "b",
            "in": "query",
            "description": "Second operand. Default value is <code>20</code>.",
            "required": true,
            "type": "string",
            "default": "20",
            "enum": [
              "20"
            ]
          }
        ],
        "responses": { }
      }
    },
    "/mul?a={a}&b={b}": {
      "get": {
        "description": "Responds with a product of two numbers.",
        "operationId": "Multiply two integers",
        "parameters": [
          {
            "name": "a",
            "in": "query",
            "description": "First operand. Default value is <code>20</code>.",
            "required": true,
            "type": "string",
            "default": "20",
            "enum": [
              "20"
            ]
          },
          {
            "name": "b",
            "in": "query",
            "description": "Second operand. Default value is <code>5</code>.",
            "required": true,
            "type": "string",
            "default": "5",
            "enum": [
              "5"
            ]
          }
        ],
        "responses": { }
      }
    }
  }
}

Per importare l'API Calculator, fare clic su API nel menu Gestione API sulla sinistra e quindi scegliere Importa API.To import the calculator API, click APIs from the API Management menu on the left, and then click Import API.

Pulsante Importa API

Per configurare l'API di calcolatrice, eseguire la procedura seguente:Perform the following steps to configure the calculator API.

  1. Fare clic su Da file, passare al file calculator.json salvato e fare clic sul pulsante di opzione Swagger.Click From file, browse to the calculator.json file you saved, and click the Swagger radio button.
  2. Digitare calc nella casella di testo Suffisso URL API Web.Type calc into the Web API URL suffix textbox.
  3. Fare clic sulla casella Products (optional) (Prodotti - facoltativo) e scegliere Starter.Click in the Products (optional) box and choose Starter.
  4. Fare clic su Salva per importare l'API.Click Save to import the API.

Add new API

Una volta importata l'API, la pagina di riepilogo dell'API viene visualizzata nel portale di pubblicazione.Once the API is imported, the summary page for the API is displayed in the publisher portal.

Chiamare l'API con esito negativo dal portale per sviluppatoriCall the API unsuccessfully from the developer portal

A questo punto, l'API è stata importata in Gestione API, ma la chiamata dal portale per sviluppatori non può ancora essere completata perché il servizio back-end è protetto con l'autenticazione di Azure AD.At this point, the API has been imported into API Management, but cannot yet be called successfully from the developer portal because the backend service is protected with Azure AD authentication. Questa operazione è illustrata nel video a partire da 7:40 minuti usando i passaggi seguenti.This is demonstrated in the video starting at 7:40 using the following steps.

Fare clic su Portale per sviluppatori sul lato in alto a destra del portale di pubblicazione.Click Developer portal from the top-right side of the publisher portal.

Portale per sviluppatori

Fare clic su API e sull'API Calculator.Click APIs and click the Calculator API.

Portale per sviluppatori

Fare clic su Prova.Click Try it.

Prova

Fare clic su Invia e prendere nota dello stato della risposta 401 Unauthorized.Click Send and note the response status of 401 Unauthorized.

Invio

La richiesta non è autorizzata perché l'API back-end è protetta da Azure Active Directory.The request is unauthorized because the backend API is protected by Azure Active Directory. Prima di poter chiamare l'API correttamente, è necessario configurare il portale per sviluppatori impostando l'autorizzazione per l'uso di OAuth 2.0 da parte degli sviluppatori.Before successfully calling the API the developer portal must be configured to authorize developers using OAuth 2.0. Questo processo è descritto nelle sezioni seguenti.This process is described in the following sections.

Registrare il portale per sviluppatori come un'applicazione AADRegister the developer portal as an AAD application

Il primo passaggio per configurare il portale per sviluppatori con l'autorizzazione per l'uso di OAuth 2.0 consiste nel registrare il portale come un'applicazione AAD.The first step in configuring the developer portal to authorize developers using OAuth 2.0 is to register the developer portal as an AAD application. Nel video questa operazione è illustrata a partire da 8:27 minuti.This is demonstrated starting at 8:27 in the video.

Passare al tenant di Azure AD dal primo passaggio di questo video, in questo esempio APIMDemo, e quindi alla scheda Applicazioni.Navigate to the Azure AD tenant from the first step of this video, in this example APIMDemo and navigate to the Applications tab.

Nuova applicazione

Fare clic sul pulsante Aggiungi per creare una nuova applicazione Azure Active Directory e scegliere Aggiungi un'applicazione che l'organizzazione sta sviluppando.Click the Add button to create a new Azure Active Directory application, and choose Add an application my organization is developing.

Nuova applicazione

Scegliere Applicazione Web e/o API Web, immettere un nome e fare clic sulla freccia avanti.Choose Web application and/or Web API, enter a name, and click the next arrow. In questo esempio viene usato APIMDeveloperPortal .In this example APIMDeveloperPortal is used.

Nuova applicazione

Per URL accesso immettere l'URL del servizio Gestione API e aggiungere /signin.For Sign-on URL enter the URL of your API Management service and append /signin. In questo esempio viene usato https://contoso5.portal.azure-api.net/signin .In this example https://contoso5.portal.azure-api.net/signin is used.

Per URI ID app immettere l'URL del servizio Gestione API e aggiungere alcuni caratteri univoci.For App Id URL enter the URL of your API Management service and append some unique characters. Si può usare qualsiasi carattere. In questo esempio vengono usati https://contoso5.portal.azure-api.net/dp.These can be any desired characters and in this example https://contoso5.portal.azure-api.net/dp is used. Dopo aver completato la configurazione delle Proprietà dell'app, fare clic sul segno di spunta per creare l'applicazione.When the desired App properties are configured, click the check mark to create the application.

Nuova applicazione

Configurare un server autorizzazione OAuth 2.0 in Gestione APIConfigure an API Management OAuth 2.0 authorization server

Il passaggio successivo consiste nel configurare un server autorizzazione OAuth 2.0 in Gestione API.The next step is to configure an OAuth 2.0 authorization server in API Management. Questo passaggio è illustrato nel video a partire da 9:43 minuti.This step is demonstrated in the video starting at 9:43.

Fare clic su Sicurezza dal menu Gestione API a sinistra, scegliere OAuth 2.0 e fare clic su Add authorization server.Click Security from the API Management menu on the left, click OAuth 2.0, and then click Add authorization server.

Add authorization server

Immettere un nome ed eventualmente una descrizione nei campi Nome e Descrizione.Enter a name and an optional description in the Name and Description fields. Questi campi vengono usati per identificare il server autorizzazione OAuth 2.0 all'interno dell'istanza del servizio Gestione API corrente.These fields are used to identify the OAuth 2.0 authorization server within the API Management service instance. In questo esempio viene usato Authorization server demo .In this example Authorization server demo is used. In un secondo momento quando si specifica un server di OAuth 2.0 da usare per l'autenticazione per un'API, si selezionerà questo nome.Later when you specify an OAuth 2.0 server to be used for authentication for an API, you will select this name.

Per Client registration page URL immettere un valore segnaposto, ad esempio http://localhost.For the Client registration page URL enter a placeholder value such as http://localhost. Client registration page URL fa riferimento alla pagina che gli utenti possono usare per creare e configurare i propri account per i provider OAuth 2.0 che supportano la gestione degli account da parte degli utenti.The Client registration page URL points to the page that users can use to create and configure their own accounts for OAuth 2.0 providers that support user management of accounts. In questo esempio gli utenti non creano e configurano i propri account, quindi si usa un segnaposto.In this example users do not create and configure their own accounts so a placeholder is used.

Add authorization server

Successivamente, specificare un valore per Authorization endpoint URL e Token endpoint URL.Next, specify Authorization endpoint URL and Token endpoint URL.

Serve autorizzazione

Questi valori possono essere recuperati dalla pagina Endpoint dell'app dell'applicazione AAD creata per il portale per sviluppatori.These values can be retrieved from the App Endpoints page of the AAD application you created for the developer portal. Per accedere agli endpoint passare alla scheda Configura per l'applicazione di AAD e fare clic su Visualizza endpoint.To access the endpoints navigate to the Configure tab for the AAD application and click View endpoints.

Applicazione

Visualizza endpoint

Copiare il valore di Endpoint di autorizzazione OAuth 2.0 e incollarlo nella casella di testo Authorization endpoint URL.Copy the OAuth 2.0 authorization endpoint and paste it into the Authorization endpoint URL textbox.

Add authorization server

Copiare il valore di Endpoint token OAuth 2.0 e incollarlo nella casella di testo Token endpoint URL.Copy the OAuth 2.0 token endpoint and paste it into the Token endpoint URL textbox.

Add authorization server

Oltre a incollare il valore nell'endpoint del token, aggiungere un altro parametro del corpo denominato resource e come valore usare l'URI ID App dell'applicazione AAD per il servizio back-end creato durante la pubblicazione del progetto di Visual Studio.In addition to pasting in the token endpoint, add an additional body parameter named resource and for the value use the App Id URI from the AAD application for the backend service that was created when the Visual Studio project was published.

URI ID app

Specificare quindi le credenziali del client.Next, specify the client credentials. Queste sono le credenziali per la risorsa a cui si vuole accedere, in questo caso il portale per gli sviluppatori.These are the credentials for the resource you want to access, in this case the developer portal.

Credenziali del client

Per ottenere il valore di ID client passare alla scheda Configura dell'applicazione AAD per il portale per gli sviluppatori e copiare il valore di ID client.To get the Client Id, navigate to the Configure tab of the AAD application for the developer portal and copy the Client Id.

Per ottenere il Segreto client fare clic sull'elenco a discesa Seleziona durata nella sezione Chiavi e specificare un intervallo.To get the Client Secret click the Select duration drop-down in the Keys section and specify an interval. In questo esempio viene usato 1 anno.In this example 1 year is used.

ID Client

Fare clic su Salva per salvare la configurazione e visualizzare la chiave.Click Save to save the configuration and display the key.

Importante

Annotare il valore relativo alla chiave.Make a note of this key. Una volta chiusa la finestra di configurazione di Azure Active Directory, la chiave non potrà più essere visualizzata.Once you close the Azure Active Directory configuration window, the key cannot be displayed again.

Copiare la chiave negli Appunti, tornare al portale di pubblicazione, incollare la chiave nella casella di testo Segreto client e fare clic su Salva.Copy the key to the clipboard, switch back to the publisher portal, paste the key into the Client Secret textbox, and click Save.

Add authorization server

Subito dopo le credenziali del client è presente una concessione del codice di autorizzazione.Immediately following the client credentials is an authorization code grant. Copiare questo codice di autorizzazione e tornare all'applicazione del portale per sviluppatori Azure AD e incollare la concessione di autorizzazione nel campo URL di risposta, quindi fare di nuovo clic su Salva.Copy this authorization code and switch back to your Azure AD developer portal application configure page, and paste the authorization grant into the Reply URL field, and click Save again.

URL di risposta

Il passaggio successivo consiste nel configurare le autorizzazioni per l'applicazione AAD nel portale per sviluppatori.The next step is to configure the permissions for the developer portal AAD application. Fare clic su Autorizzazioni applicazione e selezionare la casella per Lettura dati directory.Click Application Permissions and check the box for Read directory data. Fare clic su Salva per salvare la modifica e quindi scegliere Aggiungi applicazione.Click Save to save this change, and then click Add application.

Aggiungere autorizzazioni

Fare clic sull'icona di ricerca digitare APIM nella casella Che inizia con, selezionare APIMAADDemo e fare clic sul segno di spunta per salvare.Click the search icon, type APIM into the Starting with box, select APIMAADDemo, and click the check mark to save.

Aggiungere autorizzazioni

Fare clic su Autorizzazioni delegate per APIMAADDemo, selezionare la casella Accedi a APIMAADDemo e fare clic su Salva.Click Delegated Permissions for APIMAADDemo and check the box for Access APIMAADDemo, and click Save. Questa impostazione consente all'applicazione nel portale per sviluppatori di accedere al servizio back-end.This allows the developer portal application to access the backend service.

Aggiungere autorizzazioni

Abilitare l'autorizzazione utente OAuth 2.0 per l'API CalculatorEnable OAuth 2.0 user authorization for the Calculator API

Dopo aver configurato il server OAuth 2.0, è possibile specificarlo nelle impostazioni di sicurezza per l'API.Now that the OAuth 2.0 server is configured, you can specify it in the security settings for your API. Questo passaggio è illustrato nel video a partire da 14:30 minuti.This step is demonstrated in the video starting at 14:30.

Fare clic su API nel menu a sinistra, quindi fare clic su Calculator per visualizzarne e configurarne le impostazioni.Click APIs in the left menu, and click Calculator to view and configure its settings.

API Calculator

Passare alla scheda Sicurezza, selezionare la casella di controllo OAuth 2.0, selezionare il server di autorizzazione specifico dall'elenco a discesa Authorization server e fare clic su Salva.Navigate to the Security tab, check the OAuth 2.0 checkbox, select the desired authorization server from the Authorization server drop-down, and click Save.

API Calculator

Chiamare correttamente l'API Calculator dal portale per sviluppatoriSuccessfully call the Calculator API from the developer portal

Dopo avere configurato l'autorizzazione OAuth 2.0 nell'API, le relative operazioni possono essere chiamate correttamente dal centro per sviluppatori.Now that the OAuth 2.0 authorization is configured on the API, its operations can be successfully called from the developer center. Questo passaggio è illustrato nel video a partire da 15:00 minuti.THis step is demonstrated in the video starting at 15:00.

Tornare all'operazione Aggiungere due Integer del servizio calcolatrice nel portale per sviluppatori e fare clic su Prova.Navigate back to the Add two integers operation of the calculator service in the developer portal and click Try it. Si noti il nuovo elemento nella sezione Autorizzazione corrispondente al server autorizzazione appena aggiunto.Note the new item in the Authorization section corresponding to the authorization server you just added.

API Calculator

Selezionare Authorization code dall'elenco a discesa dell'autorizzazione e immettere le credenziali dell'account da usare.Select Authorization code from the authorization drop-down list and enter the credentials of the account to use. Se si è già eseguito l'accesso con l'account, è possibile che non venga richiesto.If you are already signed in with the account you may not be prompted.

API Calculator

Fare clic su Invia e prendere nota del valore 200 OK in Stato della risposta e dei risultati dell'operazione nel contenuto della risposta.Click Send and note the Response status of 200 OK and the results of the operation in the response content.

API Calculator

Configurare un'applicazione desktop per chiamare l'APIConfigure a desktop application to call the API

La procedura successiva del video inizia da 16:30 minuti e configura una semplice applicazione desktop per chiamare l'API.The next procedure in the video starts at 16:30 and configures a simple desktop application to call the API. Il primo passaggio consiste nel registrare l'applicazione desktop in Azure AD e nel concedere l'accesso alla directory e al servizio back-end.The first step is to register the desktop application in Azure AD and give it access to the directory and to the backend service. Da 18:25 minuti è presente una dimostrazione dell'applicazione desktop che chiama un'operazione nell'API Calculator.At 18:25 there is a demonstration of the desktop application calling an operation on the calculator API.

Configurare criteri di convalida JWT per preautorizzare le richiesteConfigure a JWT validation policy to pre-authorize requests

L'ultima procedura dei video inizia dal minuto 20:48 e illustra come usare i criteri di convalida JWT per preautorizzare le richieste con la convalida dei token di accesso di ogni richiesta in ingresso.The final procedure in the video starts at 20:48 and shows you how to use the Validate JWT policy to pre-authorize requests by validating the access tokens of each incoming request. Se la richiesta non viene convalidata dai criteri di convalida JWT, viene bloccata da Gestione API e non viene passata al back-end.If the request is not validated by the Validate JWT policy, the request is blocked by API Management and is not passed along to the backend.

<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
    <openid-config url="https://login.microsoftonline.com/DemoAPIM.onmicrosoft.com/.well-known/openid-configuration" />
    <required-claims>
        <claim name="aud">
            <value>https://DemoAPIM.NOTonmicrosoft.com/APIMAADDemo</value>
        </claim>
    </required-claims>
</validate-jwt>

Per un'altra dimostrazione relativa alla configurazione e all'uso di questi criteri, vedere l' episodio 177 di Cloud Cover su altre funzionalità di Gestione API e passare direttamente al minuto 13:50.For another demonstration of configuring and using this policy, see Cloud Cover Episode 177: More API Management Features and fast-forward to 13:50. Passare a 15:00 minuti per vedere i criteri configurati nell'editor dei criteri e quindi a 18:50 minuti per una dimostrazione della chiamata di un'operazione dal portale per sviluppatori, con e senza il token di autorizzazione richiesto.Fast forward to 15:00 to see the policies configured in the policy editor and then to 18:50 for a demonstration of calling an operation from the developer portal both with and without the required authorization token.

Passaggi successiviNext steps