🛡️ Microsoft Entra ID & MSAL

Risolvere Errore AADSTS50011 in Microsoft Entra ID: Guida Redirect URI [2026]

⚡ Sintomi dell'Errore AADSTS50011

AADSTS50011: The reply URL specified in the request does not match the reply URLs configured for the application '{client-id}'.
Questo messaggio appare all'utente non appena tenta di eseguire il login tramite Microsoft identity platform (MSAL). È causato da una discrepanza binaria anche solo di un singolo carattere tra il client e il cloud.

1. Le 4 Cause Principali di Mismatch

Il motore di validazione OAuth 2.0 / OpenID Connect di Microsoft Entra ID è rigoroso e non applica alcuna tolleranza. I motivi per cui l'errore compare nel 99% dei casi sono:

Causa del Mismatch Richiesto dal Client Presente su Entra ID
Trailing Slash (Barra finale) http://localhost:3000 http://localhost:3000/
Protocollo (HTTP vs HTTPS) https://app.example.com/auth http://app.example.com/auth
Porta di sviluppo dinamica http://localhost:5173 (Vite) http://localhost:3000 (React)
Tipologia Piattaforma Errata SPA con PKCE (CORS) Configurato sotto sezione "Web"

2. Risoluzione Passo-Passo su Microsoft Entra Admin Center

  1. Accedi a entra.microsoft.com con credenziali amministrative o di Developer.
  2. Nel menu laterale, naviga su Applicazioni → Registrazioni app (App registrations).
  3. Seleziona la scheda Tutte le applicazioni e clicca sul nome della tua app (o cerca il client-id citato nel messaggio d'errore).
  4. Nel menu dell'applicazione, clicca su Autenticazione (Authentication).
  5. Verifica le configurazioni della piattaforma:
    • Se stai sviluppando un frontend puro (React, Vue, Angular, static HTML con MSAL.js), l'URI DEVE trovarsi sotto la sezione Applicazione a pagina singola (SPA). Se non esiste, clicca su Aggiungi una piattaforma → Applicazione a pagina singola.
    • Se stai usando Next.js con route server-side, Django, Flask o Express che scambiano il codice con client secret, l'URI va configurato sotto la sezione Web.
    • Se stai sviluppando un'applicazione CLI o desktop (Python script, PowerShell, .NET desktop), aggiungi la piattaforma Applicazioni desktop e per dispositivi mobili con http://localhost.
  6. Aggiungi l'URI identico a quello mostrato nella stringa d'errore del browser.
  7. Clicca su Salva in alto.

3. Automazione Rapida con Microsoft Graph PowerShell

Se devi aggiornare regolarmente i redirect URI per il tuo team o durante i test su porte variabili, puoi usare lo script PowerShell ufficiale tramite il modulo Microsoft.Graph.Applications:

# Connessione a Microsoft Graph con privilegi applicativi
Connect-MgGraph -Scopes "Application.ReadWrite.All"

$AppId = "INSERISCI-IL-TUO-CLIENT-ID"
$App = Get-MgApplication -Filter "appId eq '$AppId'"

# Definizione dei nuovi Redirect URI per SPA (supporta porte multiple di localhost)
$SpaRedirects = @(
    "http://localhost:3000",
    "http://localhost:5173",
    "https://alexmaina.dev/auth/callback"
)

# Aggiornamento dell'oggetto SPA nell'App Registration
Update-MgApplication -ApplicationId $App.Id -Spa @{ RedirectUris = $SpaRedirects }

Write-Host "✅ Redirect URIs aggiornati con successo per l'app: $($App.DisplayName)" -ForegroundColor Green

4. Regole Speciali per Localhost in MSAL

Microsoft concede un'eccezione speciale per lo sviluppo locale su macchine per sviluppatori:

❓ Domande Frequenti (FAQ Tecniche)

Risposte sintetiche ai dubbi architetturali e agli errori operativi più frequenti su questo scenario.

Cosa significa esattamente il codice errore AADSTS50011?

Significa che l'URL di reindirizzamento (redirect_uri o reply URL) specificato nella richiesta di login inviata dall'applicazione non corrisponde a nessuno degli URL configurati per quella specifica App Registration nel portale Microsoft Entra ID.

Posso usare wildcard come https://*.miodominio.com come redirect URI?

No. Microsoft ha deprecato e bloccato l'uso di caratteri jolly (wildcard) nei redirect URI per prevenire attacchi di tipo OAuth token hijacking e phishing. Ogni URI di callback deve essere dichiarato esplicitamente.

Qual è la differenza tra configurare l'URL sotto 'SPA' e sotto 'Web'?

Le applicazioni Single Page (React, Angular, Vue, Vanilla JS) usano il flusso Authorization Code con PKCE e richiedono il supporto CORS sull'endpoint dei token di Entra ID. Se registri l'URL sotto 'Web', l'endpoint non invierà gli header CORS e l'autenticazione fallirà.