Esplorare Microsoft Authentication Library
Microsoft Authentication Library (MSAL) consente agli sviluppatori di acquisire i token di sicurezza da Microsoft Identity Platform per autenticare gli utenti e accedere ad API Web protette. Può essere usato per fornire l'accesso sicuro a Microsoft Graph, altre API Microsoft, API Web di terze parti o l'API Web MSAL supporta molte architetture e piattaforme diverse, tra cui .NET, JavaScript, Java, Python, Android e iOS.
MSAL offre molti modi per acquisire i token, con un'API coerente per molte piattaforme. L'uso di MSAL offre i vantaggi seguenti:
- Non è necessario usare le librerie o il codice OAuth direttamente nel protocollo nell'applicazione.
- I token vengono acquisiti per conto di un utente o di un'applicazione (se applicabile alla piattaforma).
- Viene manutenuta una cache dei token. I token vengono aggiornati se prossimi alla scadenza. Non è necessario gestire la scadenza del token in modo personalizzato.
- È possibile specificare il gruppo di destinatari che possono accedere all'applicazione.
- È possibile configurare l'applicazione dai file di configurazione.
- È possibile risolvere i problemi dell'app esponendo eccezioni, registrazione e dati di telemetria utilizzabili.
Tipi di applicazioni e scenari
Con MSAL è possibile acquisire un token da molti tipi di applicazioni: applicazioni Web, API Web, app a pagina singola (JavaScript), applicazioni native e per dispositivi mobili, daemon e applicazioni sul lato server. MSAL supporta attualmente le piattaforme e i framework elencati nella tabella seguente.
Libreria | Piattaforme e framework supportati |
---|---|
MSAL per Android | Android |
MSAL Angular | App a pagina singola con framework Angular e Angular.js |
MSAL per iOS e macOS | iOS e macOS |
MSAL Go (anteprima) | Windows, macOS, Linux |
MSAL Java | Windows, macOS, Linux |
MSAL.js | Framework JavaScript/TypeScript come Vue.js, Ember.js o Durandal.js |
MSAL.NET | .NET Framework, .NET, .NET MAUI, WINUI, Xamarin Android, Xamarin iOS, piattaforma UWP (Universal Windows Platform) |
MSAL Node | App Web con Express, app desktop con Electron, app console multipiattaforma |
MSAL Python | Windows, macOS, Linux |
MSAL React | App a pagina singola con librerie React e basate su React (Next.js, Gatsby.js) |
Flussi di autenticazione
La tabella seguente mostra alcuni dei diversi flussi di autenticazione forniti da Microsoft Authentication Library (MSAL). Questi flussi possono essere usati in vari scenari di applicazione.
Flusso di autenticazione | Abilita | Tipi di applicazione supportati |
---|---|---|
Codice di autorizzazione | Accesso utente e accesso alle API Web per conto dell'utente. | Desktop, Mobile, App a pagina singola (SPA) (richiede PKCE), Web |
Credenziali del client | Accesso alle API Web usando l'identità dell'applicazione stessa. In genere usato per la comunicazione da server a server e script automatizzati che non richiedono alcuna interazione dell'utente. | Daemon |
Codice del dispositivo | Accesso utente e accesso alle API Web per conto dell'utente su dispositivi con vincoli di input, ad esempio dispositivi smart TV e IoT. Usato anche dalle applicazioni dell'interfaccia della riga di comando. | Desktop, dispositivi mobili |
Concessione implicita | Accesso utente e accesso alle API Web per conto dell'utente. Il flusso di concessione implicita non è più consigliato: usare invece il codice di autorizzazione con PKCE. | App a pagina singola (SPA), Web |
On-behalf-of (OBO) | Accesso da un'API Web "upstream" a un'API Web "downstream" per conto dell'utente. L'identità e le autorizzazioni delegate dell'utente vengono passate all'API downstream dall'API upstream. | API Web |
Nome utente/password (ROPC) | Consente a un'applicazione di eseguire l'accesso dell'utente gestendone direttamente la password. Il flusso ROPC NON è consigliato. | Desktop, Mobile |
Autenticazione integrata di Windows (IWA) | Consente alle applicazioni nei computer aggiunti a dominio o Microsoft Entra di acquisire un token in modo invisibile all'utente (senza alcuna interazione dell'interfaccia utente dell'utente). | Desktop, Mobile |
Applicazioni client pubbliche e riservate
Microsoft Authentication Library (MSAL) definisce due tipi di client; client pubblici e client riservati. Un client è un'entità software con un identificatore univoco assegnato da un provider di identità. I tipi di client si differenziano per la loro capacità di eseguire l'autenticazione in modo sicuro con il server di autorizzazione e di conservare informazioni sensibili e di prova dell'identità in modo che non possano essere accessibili o noti a un utente nell'ambito dell'accesso.
Quando si esamina la natura pubblica o riservata di un determinato client, si sta valutando la possibilità di tale client di dimostrare la propria identità al server di autorizzazione. Questo è importante perché il server di autorizzazione deve essere in grado di considerare attendibile l'identità del client per rilasciare token di accesso.
Applicazioni client pubbliche eseguite su dispositivi, ad esempio desktop, API senza browser, app per dispositivi mobili o sul lato client. Non possono essere considerati attendibili per mantenere in modo sicuro i segreti dell'applicazione, quindi possono accedere solo alle API Web per conto dell'utente. Ogni volta che l'origine, o il bytecode compilato di una determinata app, viene trasmesso ovunque possa essere letto, smontato o ispezionato in altro modo da parti non attendibili. Inoltre, poiché supportano solo i flussi client pubblici e non possono contenere segreti in fase di configurazione, non possono avere segreti client.
Le applicazioni client riservate eseguite su server come le app Web, le app API Web o le app di servizio/daemon. Sono considerati di difficile accesso da parte degli utenti o utenti malintenzionati e pertanto possono contenere in modo adeguato i segreti in fase di configurazione per asserire la prova della propria identità. L'ID client viene esposto tramite il Web browser, ma il segreto viene passato solo nel backchannel e non viene mai esposto direttamente.