Modulo 1 · Esercizio 5: App registration e autenticazione con certificato
Passo 1 · Registrazione della nuova Enterprise Application (App ID)
- 1. Ripartendo dalla VM
SEA-DEV1andare su https://entra.microsoft.com/ e successivamente Entra ID > App registrations > New registration

- 2. Assegnare un nome all'applicazione, ad esempio
App-Graph-CertAuth. - 3. Lasciare il tipo di account supportato sull'impostazione predefinita per il tenant singolo (Accounts in this organizational directory only).
- 4. Selezionare Register per creare l'app.

- 5. Aprire l'app appena creata e andare su API permissions > Add a permission > Microsoft Graph > Application permissions.


- 6. Aggiungere i seguenti permessi applicativi :
Microsoft Graph:
- Group.ReadWrite.All
- Sites.FullControl.All
- TermStore.ReadWrite.All
- User.ReadWrite.All
Sharepoint:
- Sites.FullControl.All

- 7. Aggiungere anche il permesso SharePoint > Sites.FullControl.All e proseguire.

- 8. Selezionare Grant admin consent for per approvare i permessi a livello di amministratore: tutti devono risultare con stato Granted for (segno di spunta verde).

Attenzione
Senza il Grant admin consent, i permessi applicativi restano "Not granted" e le chiamate Graph con l'app falliranno con un errore di autorizzazione.
Pericolo
Sites.FullControl.All, User.ReadWrite.All e Group.ReadWrite.All sono permessi applicativi molto ampi: l'app agisce su tutto il tenant senza utente connesso. In produzione applicare il principio del least privilege (es. Sites.Selected per limitare l'accesso a siti specifici).
Passo 2 · Generazione del certificato da PowerShell
-
1. Aprire su Visual Studio Code il file:
-
2. Sulla VM
SEA-DEV1, aprire PowerShell (Run as administrator) da VSC. - 3. Creare la cartella C:\Cert.
- 4. Eseguire il comando per generare il certificato in formato PFX e CER:
- 5. Al termine, verranno generati due file:
cert.pfx: contiene la chiave privata, va importato sulla VM (nel certificate store locale).cert.cer: contiene solo la parte pubblica, va caricato sull'Enterprise Application in Entra ID.

Passo 3 · Importazione del certificato PFX sulla VM
- 1. Fare doppio clic sul file
cert.pfxgenerato al passo precedente. - 2. Si apre la procedura guidata Certificate Import Wizard.
- 3. Selezionare come archivio Local Machine.
- 4. Lasciare Automatically select the certificate store .
- 5. Completare l'importazione.

- 6. Verificare l'importazione da PowerShell:
Annotare il valore di Thumbprint del certificato appena importato: servirà per autenticarsi con Microsoft Graph.

Passo 4 · Caricamento del certificato pubblico sull'Enterprise Application
- 1. Tornare su Entra ID > App registrations, selezionare l'app creata al Passo 1.
- 2. Andare su Certificates & secrets > Certificates > Upload certificate.

- 3. Selezionare il file
cert.cergenerato al Passo 2 e caricarlo manualmente. - 4. Selezionare Add.

- 5. Verificare che il certificato compaia nell'elenco con thumbprint, data di inizio e data di scadenza corrette.

Nota
Il file .cer (parte pubblica) va caricato sull'app in Entra ID; il file .pfx (parte privata, protetta da password) resta solo sulla macchina che dovrà autenticarsi, non va mai caricato sul portale.
Suggerimento
Microsoft raccomanda i certificati al posto dei client secret per l'autenticazione app-only. Tenere traccia della data di scadenza e pianificare la rotazione prima che il certificato scada.
Passo 5 · Verifica con comandi Microsoft Graph tramite l'Enterprise Application
-
1. Tornare su Visual Studio Code con il seguente file aperto:
-
2. Eseguire sul PowerShell i seguenti comandi:
- 3. Connettersi a Microsoft Graph usando l'app registrata e il certificato (autenticazione app-only, senza login utente):
Connect-MgGraph -ClientId "<APP_ID_dell'Enterprise_Application>" `
-TenantId "<TENANT_ID>" `
-CertificateThumbprint "<THUMBPRINT_annotato_al_Passo_3>"
Importante
Prima di eseguire il comando, sostituire i tre segnaposto con i valori del proprio tenant, mantenendo le virgolette:
<APP_ID_dell'Enterprise_Application>con il Client ID: campo Application (client) ID nella pagina Overview dell'app registrata al Passo 1.<TENANT_ID>con il Tenant ID: campo Directory (tenant) ID nella stessa pagina Overview.<THUMBPRINT_annotato_al_Passo_3>con il Thumbprint del certificato annotato al Passo 3 (visibile anche in Certificates & secrets > Certificates).
- 4. Verificare che l'autenticazione sia avvenuta in modalità app-only:
Nell'output, il campo AuthType deve risultare AppOnly.

- 5. Per test provare a listare gli utenti del tenant:

- 6. Provare a creare un nuovo utente da Graph:
(Cambiare XXXXXX con il proprio primary domain)
$PasswordProfile = @{
Password = "P@ssw0rd-Temp!2026"
ForceChangePasswordNextSignIn = $true
}
New-MgUser -DisplayName "User Test Graph" `
-PasswordProfile $PasswordProfile `
-AccountEnabled `
-MailNickname "UserTestGraph" `
-UserPrincipalName "usertestgraph@XXXXXX"

- 7. Come ulteriore verifica a scelta, ad esempio elencare i gruppi del tenant o verificare le licenze assegnate a un utente:
(Sostituire "User" con l'Object id di un utente)