Skip to content

Commit cc73640

Browse files
committed
Copy Files From Source Repo (2025-09-04 17:44)
1 parent 5ebaef3 commit cc73640

20 files changed

+3377
-1
lines changed

README.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,16 @@
1-
# mslearn-azure-developer.it-it
1+
# Esercizi di Microsoft Lab
2+
<!-- Change the title above as appropriate -->
3+
[Pagine GitHub degli esercizi](https://microsoftlearning.github.io/mslearn-azure-developer/)
4+
5+
Questo repository contiene esercizi e file di supporto per il contenuto di sviluppo di competenze Microsoft.
6+
7+
Gli esercizi possono essere usati sia in esperienze di sviluppo di competenze autogestite su [Microsoft Learn](https://learn.microsoft.com) che durante il training con docente autorizzato Microsoft.
8+
<!-- Update thr paragraph above with a link to a specific Learning Path or course as appropriate -->
9+
10+
## Informazioni per i MCT
11+
<!-- You can remove this section if the exercises will not be used to support Microsoft Official Curriculum ILT -->
12+
13+
**Si è un Microsoft Certified Trainer?** - Esaminare la [guida per utenti di GitHub per Microsoft Certified Trainer](https://microsoftlearning.github.io/MCT-User-Guide/)
14+
15+
Qualsiasi MCT (Microsoft Certified Trainer) può inviare una richiesta pull per il codice o il contenuto nel repository GitHub. Microsoft e l'autore del corso valuteranno le modifiche proposte al contenuto e al codice del lab e, se ritenute appropriate, le integreranno. È possibile inviare bug, modifiche, miglioramenti e idee. Se si scopre in anticipo una nuova funzionalità di Azure o Microsoft 365? Inviare una nuova demo.
16+
0 Bytes
Binary file not shown.

allfiles/readme.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Contenuto della directory:
2+
3+
* Cartella *downloads* che contiene i file di progetto di avvio compressi per facilitarne il download e l'estrazione.
4+
* Cartella *labs* che contiene le versioni non compresse dei file di avvio
5+
6+
>**Nota:** non tutti gli esercizi hanno file di avvio.
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
---
2+
lab:
3+
topic: Azure API Management
4+
title: Importare e configurare un'API con Gestione API di Azure
5+
description: 'Informazioni su come importare, pubblicare e testare un''API conforme alla specifica OpenAPI.'
6+
---
7+
8+
# Importare e configurare un'API con Gestione API di Azure
9+
10+
In questo esercizio si crea un'istanza di Gestione API di Azure, si importa un'API back-end basata sulla specifica OpenAPI, si configurano le impostazioni dell'API, inclusi i requisiti dell'URL del servizio Web e della sottoscrizione, e si testano le operazioni dell'API per verificare che funzionino correttamente.
11+
12+
Attività eseguite in questo esercizio:
13+
14+
* Creare un'istanza di Gestione API
15+
* Importare un'API
16+
* Configurare le impostazioni di back-end
17+
* Testare l'API
18+
19+
Questo esercizio richiede circa **20** minuti.
20+
21+
## Creare un'istanza di Gestione API
22+
23+
In questa sezione dell'esercizio si crea un gruppo di risorse e un account di Archiviazione di Azure. Si registrano anche l'endpoint e la chiave di accesso per l'account.
24+
25+
1. Nel browser passare al portale di Azure [https://portal.azure.com](https://portal.azure.com). Accedere con le credenziali di Azure, se richiesto.
26+
27+
1. Usare il pulsante **[\>_]** a destra della barra di ricerca, nella parte superiore della pagina, per aprire una nuova sessione di Cloud Shell nel portale di Azure selezionando un ambiente ***Bash***. Cloud Shell fornisce un'interfaccia della riga di comando in un riquadro nella parte inferiore del portale di Azure. Se viene richiesto di selezionare un account di archiviazione per salvare in modo permanente i file, selezionare **Nessun account di archiviazione richiesto**, selezionare la sottoscrizione e quindi **Applica**.
28+
29+
> **Nota**: se in precedenza è stata creata una sessione Cloud Shell che usa un ambiente *PowerShell*, passare a ***Bash***.
30+
31+
1. Creare un gruppo di risorse con le risorse necessarie per questo esercizio. Sostituire **myResourceGroup** con un nome da usare per il gruppo di risorse. Se necessario, è possibile sostituire **eastus2** con un'area nelle vicinanze. Se si ha già un gruppo di risorse da usare, procedere con il passaggio successivo.
32+
33+
```azurecli
34+
az group create --location eastus2 --name myResourceGroup
35+
```
36+
37+
1. Creare alcune variabili che verranno usate dai comandi dell'interfaccia della riga di comando, in modo da ridurre la quantità di digitazione. Sostituire **myLocation** con il valore scelto in precedenza. Il nome di Gestioni API deve essere un nome univoco globale e lo script seguente genera una stringa casuale. Sostituire **myEmail** con un indirizzo di posta elettronica a cui è possibile accedere.
38+
39+
```bash
40+
myApiName=import-apim-$RANDOM
41+
myLocation=myLocation
42+
myEmail=myEmail
43+
```
44+
45+
1. Creare un'istanza di Gestione API. Il comando **az apim create** viene usato per creare l'istanza. Sostituire **myResourceGroup** con il valore scelto in precedenza.
46+
47+
```bash
48+
az apim create -n $myApiName \
49+
--location $myLocation \
50+
--publisher-email $myEmail \
51+
--resource-group myResourceGroup \
52+
--publisher-name Import-API-Exercise \
53+
--sku-name Consumption
54+
```
55+
> **Nota:** L'operazione deve essere completata in circa cinque minuti.
56+
57+
## Importare un'API back-end
58+
59+
Questa sezione illustra come importare e pubblicare un'API back-end Specifica OpenAPI.
60+
61+
1. Nel portale di Azure cercare e selezionare **Servizi Gestione API**.
62+
63+
1. Nella schermata **Servizi di Gestione API** selezionare l'istanza di Gestione API creata.
64+
65+
1. Nel riquadro di spostamento del **Servizio Gestione API** selezionare **> API** e quindi selezionare **API**.
66+
67+
![Screenshot della sezione API del riquadro di spostamento.](./media/select-apis-navigation-pane.png)
68+
69+
70+
1. Selezionare **OpenAPI** nella sezione **Crea da definizione** e impostare l'interruttore **Di base/Completa** su **Completa** nel popup visualizzato.
71+
72+
![Screenshot della finestra di dialogo OpenAPI. I campi sono descritti in dettaglio nella tabella seguente.](./media/create-api.png)
73+
74+
Utilizzare i valori della tabella seguente per compilare il modulo. È possibile lasciare in tutti i campi non indicati il valore predefinito.
75+
76+
| Impostazione | Valore | Descrizione |
77+
|--|--|--|
78+
| **Specifica OpenAPI** | `https://bigconference.azurewebsites.net/` | Fa riferimento al servizio che implementa l'API, le richieste vengono inoltrate a questo indirizzo. La maggior parte delle informazioni necessarie nel modulo viene popolata automaticamente dopo l'immissione di questo valore. |
79+
| **Schema URL** | selezionare **HTTPS**. | Definisce il livello di sicurezza del protocollo HTTP accettato dall'API. |
80+
81+
1. Selezionare **Crea**.
82+
83+
## Configurare le impostazioni dell'API
84+
85+
Viene creata la l'*API Big Conference*. A questo punto è possibile configurare le impostazioni dell'API.
86+
87+
1. Selezionare **Impostazioni** dal menu.
88+
89+
1. Immettere `https://bigconference.azurewebsites.net/` nel campo **URL del servizio Web**.
90+
91+
1. Deselezionare la casella di controllo **La sottoscrizione è obbligatoria**.
92+
93+
1. Seleziona **Salva**.
94+
95+
## Testare l'API
96+
97+
Ora che l'API è stata importata e configurata è il momento di testarla.
98+
99+
1. Selezionare **Test** nella barra dei menu. Verranno visualizzate tutte le operazioni disponibili nell'API.
100+
101+
1. Cercare e selezionare l'operazione **Speakers_Get**.
102+
103+
1. Selezionare **Invia**. Potrebbe essere necessario scorrere verso il basso nella pagina per visualizzare la risposta HTTP.
104+
105+
Il back-end risponde con **200 OK** e alcuni dati.
106+
107+
## Pulire le risorse
108+
109+
Dopo aver completato l'esercizio, è consigliabile eliminare le risorse cloud create per evitare un utilizzo non necessario delle risorse.
110+
111+
1. Passare al gruppo di risorse creato e visualizzare il contenuto delle risorse usate in questo esercizio.
112+
1. Sulla barra degli strumenti selezionare **Elimina gruppo di risorse**.
113+
1. Immettere il nome del gruppo di risorse e confermarne l'eliminazione.
114+
115+
> **ATTENZIONE:** Se si elimina un gruppo di risorse, vengono eliminate tutte le risorse contenute in esso. Se si sceglie un gruppo di risorse esistente per questo esercizio, verranno eliminate anche tutte le risorse esistenti esterne all'ambito di questo esercizio.
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
---
2+
lab:
3+
topic: Azure authentication and authorization
4+
title: Implementare l'autenticazione interattiva con MSAL.NET
5+
description: Informazioni su come implementare l'autenticazione interattiva usando MSAL.NET SDK e acquisire un token.
6+
---
7+
8+
# Implementare l'autenticazione interattiva con MSAL.NET
9+
10+
In questo esercizio si registra un'applicazione in Microsoft Entra ID, quindi si crea un'applicazione console .NET che usa MSAL.NET per eseguire l'autenticazione interattiva e acquisire un token di accesso per Microsoft Graph. Si apprenderà come configurare gli ambiti di autenticazione e gestire il consenso utente e si scoprirà in che modo i token vengono memorizzati nella cache per le esecuzioni successive.
11+
12+
Attività eseguite in questo esercizio:
13+
14+
* Registrare un'applicazione con Microsoft Identity Platform
15+
* Creare un'app console .NET che implementa la classe **PublicClientApplicationBuilder** per configurare l'autenticazione.
16+
* Acquisire un token in modo interattivo usando l'autorizzazione **user.read** di Microsoft Graph.
17+
18+
Questo esercizio richiede circa **15** minuti.
19+
20+
## Prima di iniziare
21+
22+
Per completare l'esercizio, è necessario avere:
23+
24+
* Una sottoscrizione di Azure. Se non si dispone ancora di una sottoscrizione, è possibile [registrarsi per ottenere una](https://azure.microsoft.com/).
25+
26+
* [Visual Studio Code](https://code.visualstudio.com/) in una delle [piattaforme supportate](https://code.visualstudio.com/docs/supporting/requirements#_platforms).
27+
28+
* [.NET 8](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) o versione successiva.
29+
30+
* [C# Dev Kit](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit) per Visual Studio Code.
31+
32+
## Registrare una nuova applicazione
33+
34+
1. Nel browser passare al portale di Azure [https://portal.azure.com](https://portal.azure.com). Accedere con le credenziali di Azure, se richiesto.
35+
36+
1. Nel portale cercare e selezionare **Registrazioni app**.
37+
38+
1. Selezionare **+ Nuova registrazione** e quando viene visualizzata la pagina **Registra un'applicazione** immettere le informazioni di registrazione dell'applicazione:
39+
40+
| Campo | Valore |
41+
|--|--|
42+
| **Nome** | Immetti `myMsalApplication` |
43+
| **Tipi di account supportati** | Selezionare **Account solo in questa directory dell'organizzazione** |
44+
| **URI di reindirizzamento (facoltativo)** | Selezionare **Client pubblico/nativo (per dispositivi mobili e desktop)** e immettere `http://localhost` nella casella a destra. |
45+
46+
1. Selezionare **Registrazione**. Microsoft Entra ID assegna un ID applicazione univoco all'app. Quindi, viene visualizzata la pagina **Panoramica** dell'applicazione.
47+
48+
1. Nella sezione **Informazioni di base** della pagina **Panoramica** registrare l'**ID applicazione (client)** e l'**ID directory (tenant)**. Le informazioni sono necessarie per l'applicazione.
49+
50+
![Screenshot che mostra la posizione dei campi da copiare.](./media/01-app-directory-id-location.png)
51+
52+
## Creare un'app console .NET per acquisire un token
53+
54+
Ora che le risorse necessarie sono state distribuite in Azure, il passaggio successivo consiste nel configurare l'applicazione console. I passaggi seguenti vengono eseguiti nell'ambiente locale.
55+
56+
1. Creare una cartella con nome **authapp**, o il nome che si preferisce, per il progetto.
57+
58+
1. Avviare **Visual Studio Code**, selezionare **File > Apri cartella** e selezionare la cartella del progetto.
59+
60+
1. Selezionare **Visualizza > Terminale** per aprire un terminale.
61+
62+
1. Eseguire il comando seguente nel terminale VS Code per creare l'applicazione console .NET.
63+
64+
```
65+
dotnet new console
66+
```
67+
68+
1. Eseguire i comandi seguenti per aggiungere i pacchetti **Microsoft.Identity.Client** e **dotenv.net** al progetto.
69+
70+
```
71+
dotnet add package Microsoft.Identity.Client
72+
dotnet add package dotenv.net
73+
```
74+
75+
### Configurare l'applicazione console
76+
77+
In questa sezione si crea e si modifica un file con estensione **env** in cui saranno contenuti i segreti registrati in precedenza.
78+
79+
1. Selezionare **File > Nuovo file** e creare un file con estensione *env* nella cartella del progetto.
80+
81+
1. Aprire il file con estensione **env** e aggiungere il codice seguente. Sostituire **YOUR_CLIENT_ID**e **YOUR_TENANT_ID** con i valori registrati in precedenza.
82+
83+
```
84+
CLIENT_ID="YOUR_CLIENT_ID"
85+
TENANT_ID="YOUR_TENANT_ID"
86+
```
87+
88+
1. Premi **CTRL+S** per salvare le modifiche.
89+
90+
### Aggiungere il codice di avvio per il progetto
91+
92+
1. Aprire il file *Program.cs* e sostituire il contenuto esistente con il codice riportato di seguito: Assicurarsi di esaminare i commenti nel codice.
93+
94+
```csharp
95+
using Microsoft.Identity.Client;
96+
using dotenv.net;
97+
98+
// Load environment variables from .env file
99+
DotEnv.Load();
100+
var envVars = DotEnv.Read();
101+
102+
// Retrieve Azure AD Application ID and tenant ID from environment variables
103+
string _clientId = envVars["CLIENT_ID"];
104+
string _tenantId = envVars["TENANT_ID"];
105+
106+
// ADD CODE TO DEFINE SCOPES AND CREATE CLIENT
107+
108+
109+
110+
// ADD CODE TO ACQUIRE AN ACCESS TOKEN
111+
112+
113+
```
114+
115+
1. Premi **CTRL+S** per salvare le modifiche.
116+
117+
### Aggiungere codice per completare l'applicazione
118+
119+
1. Individuare il commento **// ADD CODE TO DEFINE SCOPES AND CREATE CLIENT** e aggiungere il codice seguente direttamente dopo il commento. Assicurarsi di esaminare i commenti nel codice.
120+
121+
```csharp
122+
// Define the scopes required for authentication
123+
string[] _scopes = { "User.Read" };
124+
125+
// Build the MSAL public client application with authority and redirect URI
126+
var app = PublicClientApplicationBuilder.Create(_clientId)
127+
.WithAuthority(AzureCloudInstance.AzurePublic, _tenantId)
128+
.WithDefaultRedirectUri()
129+
.Build();
130+
```
131+
132+
1. Individuare il commento **// ADD CODE TO ACQUIRE AN ACCESS TOKEN** e aggiungere il codice seguente direttamente dopo il commento. Assicurarsi di esaminare i commenti nel codice.
133+
134+
```csharp
135+
// Attempt to acquire an access token silently or interactively
136+
AuthenticationResult result;
137+
try
138+
{
139+
// Try to acquire token silently from cache for the first available account
140+
var accounts = await app.GetAccountsAsync();
141+
result = await app.AcquireTokenSilent(_scopes, accounts.FirstOrDefault())
142+
.ExecuteAsync();
143+
}
144+
catch (MsalUiRequiredException)
145+
{
146+
// If silent token acquisition fails, prompt the user interactively
147+
result = await app.AcquireTokenInteractive(_scopes)
148+
.ExecuteAsync();
149+
}
150+
151+
// Output the acquired access token to the console
152+
Console.WriteLine($"Access Token:\n{result.AccessToken}");
153+
```
154+
155+
1. Premere **CTRL+S** per salvare il file e quindi **CTRL+Q** per uscire dall'editor.
156+
157+
## Eseguire l'applicazione
158+
159+
Ora che l'app è stata completata, è il momento di eseguirla.
160+
161+
1. Avviare l'applicazione eseguendo il comando seguente:
162+
163+
```
164+
dotnet run
165+
```
166+
167+
1. L'app apre il browser predefinito e viene chiesto di selezionare l'account con cui si vuole eseguire l'autenticazione. Se vengono elencati più account, selezionare quello associato al tenant usato nell'app.
168+
169+
1. Se è la prima volta che si esegue l'autenticazione all'app registrata, si riceve una notifica di tipo **Autorizzazioni richieste** che chiede di approvare l'app per l'accesso e la lettura del profilo e il mantenimento dell'accesso ai dati a cui è stato concesso l'accesso. Selezionare **Accetto**.
170+
171+
![Screenshot che mostra la notifica relativa alle autorizzazioni richieste](./media/01-granting-permission.png)
172+
173+
1. Nella console verranno visualizzati i risultati simili all'esempio seguente.
174+
175+
```
176+
Access Token:
177+
eyJ0eXAiOiJKV1QiLCJub25jZSI6IlZF.........
178+
```
179+
180+
1. Avviare l'applicazione una seconda volta. Si noterà che non si riceve più la notifica di tipo **Autorizzazioni richieste**. L'autorizzazione concessa in precedenza è stata memorizzata nella cache.
181+
182+
## Pulire le risorse
183+
184+
Dopo aver completato l'esercizio, è necessario eliminare la registrazione dell'app creata in precedenza.
185+
186+
1. Nel portale di Azure passare alla registrazione dell'app creata.
187+
1. Sulla barra degli strumenti, seleziona **Elimina**.
188+
1. Confermare l'eliminazione.

0 commit comments

Comments
 (0)