Formazione
Modulo
Implementare l'autenticazione tramite Microsoft Authentication Library - Training
Implementare l'autenticazione tramite Microsoft Authentication Library
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Questo articolo presenta una panoramica dei diversi tipi di errori e fornisce raccomandazioni per la gestione degli errori di accesso comuni.
Le eccezioni in Microsoft Authentication Library (MSAL) sono destinate agli sviluppatori di app per la risoluzione dei problemi, non per essere visualizzate dagli utenti finali. I messaggi di eccezione non sono localizzati.
Durante l'elaborazione di eccezioni ed errori, è possibile usare il tipo di eccezione e il codice di errore per distinguere le eccezioni. Per un elenco dei codici di errore, vedere Codici di errore di autenticazione e autorizzazione di Microsoft Entra.
Durante l'esperienza di accesso, è possibile che si verifichino errori relativi a consenso, accesso condizionale (autenticazione a più fattori, gestione dei dispositivi, restrizioni basate sulla posizione), rilascio e riscatto di token e proprietà utente.
La sezione seguente fornisce altri dettagli sulla gestione degli errori per l'app.
MSAL.js fornisce oggetti errore che riepilogano e classificano i diversi tipi di errori comuni. Fornisce inoltre un'interfaccia per accedere a dettagli specifici degli errori, ad esempio i messaggi di errore, per gestirli in modo appropriato.
export class AuthError extends Error {
// This is a short code describing the error
errorCode: string;
// This is a descriptive string of the error,
// and may also contain the mitigation strategy
errorMessage: string;
// Name of the error class
this.name = "AuthError";
}
Estendendo la classe Error, è possibile accedere alle proprietà seguenti:
AuthError.message
: uguale a errorMessage
.AuthError.stack
: analisi dello stack per gli errori generati.Sono disponibili i tipi di errore seguenti:
AuthError
: classe Error di base per la libreria MSAL.js, usata anche per gli errori imprevisti.
ClientAuthError
: classe di errore che indica un problema con l'autenticazione client. La maggior parte degli errori che provengono dalla libreria sono ClientAuthErrors. Questi errori possono essere causati da chiamate a un metodo di accesso quando l'accesso è già in corso, utenti che annullano l'accesso e così via.
ClientConfigurationError
: classe di errore che estende ClientAuthError
. Viene generato prima che le richieste vengano effettuate quando i parametri di configurazione dell'utente specificato non sono validi o sono mancanti.
ServerError
: classe di errore che rappresenta le stringhe di errore inviate dal server di autenticazione. Questi errori possono essere parametri o formati della richiesta non validi oppure eventuali altri errori che impediscono al server di eseguire l'autenticazione o l'autorizzazione dell'utente.
InteractionRequiredAuthError
classe di errore che estende ServerError
per rappresentare gli errori del server che richiedono una chiamata interattiva. Questo errore viene generato da acquireTokenSilent
se è necessario che l'utente interagisca con il server per fornire le credenziali o il consenso per l'autenticazione/autorizzazione. I codici errore includono "interaction_required"
, "login_required"
e "consent_required"
.
Per la gestione degli errori nei flussi di autenticazione con metodi di reindirizzamento (loginRedirect
, acquireTokenRedirect
), sarà necessario gestire la promessa di reindirizzamento che è chiamata con esito positivo o negativo dopo il reindirizzamento tramite il metodo handleRedirectPromise()
come indicato di seguito:
const msal = require('@azure/msal-browser');
const myMSALObj = new msal.PublicClientApplication(msalConfig);
// Register Callbacks for redirect flow
myMSALObj.handleRedirectPromise()
.then(function (response) {
//success response
})
.catch((error) => {
console.log(error);
})
myMSALObj.acquireTokenRedirect(request);
I metodi per l'esperienza popup (loginPopup
, acquireTokenPopup
) restituiscono promesse, pertanto è possibile usare il modello per le promesse (.then
e .catch
) per gestirli, come illustrato di seguito:
myMSALObj.acquireTokenPopup(request).then(
function (response) {
// success response
}).catch(function (error) {
console.log(error);
});
Quando si tenta di usare un metodo non interattivo per acquisire un token, ad esempio acquireTokenSilent
, viene restituito un errore, ma per MSAL non è stato possibile eseguire l'operazione in modo invisibile all'utente.
Le possibili cause sono:
La correzione consiste nel chiamare un metodo interattivo, ad esempio acquireTokenPopup
o acquireTokenRedirect
:
// Request for Access Token
myMSALObj.acquireTokenSilent(request).then(function (response) {
// call API
}).catch( function (error) {
// call acquireTokenPopup in case of acquireTokenSilent failure
// due to interaction required
if (error instanceof InteractionRequiredAuthError) {
myMSALObj.acquireTokenPopup(request).then(
function (response) {
// call API
}).catch(function (error) {
console.log(error);
});
}
});
Se i token vengono recuperati in modalità invisibile all'utente, l'applicazione potrebbe riscontrare errori quando una richiesta di verifica delle attestazioni di accesso condizionale, ad esempio criteri di autenticazione a più fattori, è necessaria per un'API a cui si sta tentando di accedere.
Il modello per gestire questo errore consiste nell'acquisire in modo interattivo un token tramite MSAL. Ciò attiva una richiesta all'utente e offre a quest'ultimo la possibilità di soddisfare i criteri di accesso condizionale richiesti.
Quando si chiama un'API che richiede l'Accesso Condizionale, in alcuni casi è possibile ricevere una richiesta di attestazioni nell'errore dall'API. Ad esempio se i criteri di accesso condizionale devono avere un dispositivo gestito (Intune), l'errore sarà simile a AADSTS53000: il dispositivo deve essere gestito per accedere a questa risorsa o qualcosa di simile. In questo caso, è possibile passare le attestazioni nella chiamata per l'acquisizione del token, in modo che all'utente venga richiesto di soddisfare i criteri appropriati.
Quando i token vengono recuperati in modalità invisibile all'utente (tramite acquireTokenSilent
) usando MSAL.js, l'applicazione potrebbe riscontrare errori quando l'API a cui si tenta di accedere richiede una verifica delle attestazioni di accesso condizionale, ad esempio criteri di autenticazione a più fattori.
Il modello per gestire questo errore consiste nell'effettuare una chiamata interattiva per acquisire il token in MSAL.js, ad esempio acquireTokenPopup
o acquireTokenRedirect
, come nell'esempio seguente:
myMSALObj.acquireTokenSilent(accessTokenRequest).then(function(accessTokenResponse) {
// call API
}).catch(function(error) {
if (error instanceof InteractionRequiredAuthError) {
// extract, if exists, claims from the error object
if (error.claims) {
accessTokenRequest.claims = error.claims,
// call acquireTokenPopup in case of InteractionRequiredAuthError failure
myMSALObj.acquireTokenPopup(accessTokenRequest).then(function(accessTokenResponse) {
// call API
}).catch(function(error) {
console.log(error);
});
}
});
L'acquisizione del token in modalità interattiva visualizza una richiesta all'utente e offre a quest'ultimo la possibilità di soddisfare i criteri di Accesso Condizionale richiesti.
Quando si chiama un'API che richiede l'Accesso Condizionale, è possibile ricevere una richiesta di attestazioni nell'errore dall'API. In questo caso, è possibile passare le attestazioni restituite nell'errore al parametro claims
nell'oggetto richiesta token di accesso per soddisfare i criteri appropriati.
Vedere Come usare le API abilitate per la valutazione continua dell'accesso nelle applicazioni per altri dettagli.
L'uso di toolkit come Tauri per le applicazioni a pagina singola registrate con la piattaforma di identità non è riconosciuto per le app di produzione. Le applicazioni a pagina singola supportano solo gli URL che iniziano con https
per le app di produzione e http://localhost
per lo sviluppo locale. I prefissi come tauri://localhost
non possono essere usati per le app del browser. Questo formato può essere supportato solo per le app Web o per dispositivi mobili perché hanno un componente riservato a differenza delle app browser.
Si prevede di implementare i criteri di ripetizione dei retry quando si chiama MSAL. MSAL effettua chiamate HTTP al servizio Microsoft Entra e occasionalmente possono verificarsi errori. Ad esempio la rete può essere soggetta a malfunzionamenti o il server è sovraccarico.
Quando il servizio token di sicurezza è sovraccarico a causa di un numero eccessivo di richieste, restituisce l'errore HTTP 429 con un suggerimento sul tempo disponibile per riprovare nel campo della risposta Retry-After
.
Considerare la possibilità di abilitare l'accesso MSAL.js per diagnosticare ed eseguire il debug dei problemi
Formazione
Modulo
Implementare l'autenticazione tramite Microsoft Authentication Library - Training
Implementare l'autenticazione tramite Microsoft Authentication Library
Documentazione
Inizializzare le applicazioni client MSAL.js - Microsoft identity platform
Informazioni sull'inizializzazione delle applicazioni client con Microsoft Authentication Library per JavaScript (MSAL.js).
Single Sign-On (MSAL.js) - Microsoft identity platform
Informazioni sulla creazione di esperienze Single Sign-on con Microsoft Authentication Library per JavaScript (MSAL.js).
Registrazione di errori ed eccezioni in MSAL.js - Microsoft identity platform
Informazioni su come registrare errori ed eccezioni in MSAL.js