Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Libreria di Autenticazione Microsoft nodo (MSAL) supporta l'acquisizione di token dal broker di token nativo. Quando si usa il broker nativo, i token di aggiornamento vengono associati al dispositivo in cui vengono acquisiti e non sono accessibili da msal-node o dall'applicazione. Ciò garantisce un livello di sicurezza superiore che non può essere raggiunto con il solo msal-node.
Questo articolo illustra come configurare il broker Windows, configurare la verifica del possesso e comprendere il comportamento specifico del broker.
Il supporto broker è disponibile nelle piattaforme seguenti:
| Platform | Broker | Documentazione |
|---|---|---|
| Windows | Responsabile degli Account Web (WAM) | Windows broker (questo articolo) |
| macOS | plug-in di Microsoft Enterprise SSO (Portale aziendale) | Broker macOS |
| Linux | Microsoft Single Sign-On per Linux | Broker Linux |
Che cos'è un broker
Un broker di autenticazione è un componente eseguito nel computer di un utente e gestisce gli handshake di autenticazione e il ciclo di vita dei token per gli account connessi. In Windows questo ruolo viene eseguito da Web Account Manager (WAM). I vantaggi principali includono:
- Sicurezza avanzata. I miglioramenti della sicurezza vengono distribuiti tramite aggiornamenti del sistema operativo o broker senza richiedere modifiche al codice dell'app. I token di aggiornamento sono associati al dispositivo e protetti dall'esfiltrazione.
- Supporto delle funzionalità. Accesso alle funzionalità avanzate del sistema operativo, come Windows Hello, i criteri di accesso condizionale di Microsoft Entra e le chiavi di sicurezza FIDO (Fast Identity Online), senza codice di supporto aggiuntivo.
- Integrazione del sistema. Le applicazioni si collegano alla selezione account predefinita, consentendo agli utenti di selezionare rapidamente un account esistente invece di immettere nuovamente le credenziali.
- Protezione dei token. Il broker garantisce che i token di aggiornamento siano associati al dispositivo e consentano alle app di acquisire token di accesso di verifica del possesso.
Architetture supportate
- Windows: x64, x86, ARM64
Prerequisiti
- Node.js versione 18 o successive
- Installare
@azure/msal-node-extensionscome dipendenza - Registrare l'URI di reindirizzamento del broker nella registrazione dell'app. Per il valore richiesto, vedere URI di reindirizzamento.
URI di reindirizzamento
Registrare l'URI di reindirizzamento seguente nella piattaforma applicazioni per dispositivi mobili e desktop nel portale di Azure:
ms-appx-web://Microsoft.AAD.BrokerPlugin/<your-client-id>
Sostituire <your-client-id> con l'ID client dell'applicazione.
Abilitare la funzionalità
L'abilitazione del brokering di token richiede un solo parametro di configurazione. Passare un'istanza NativeBrokerPlugin nella configurazione del broker:
import { PublicClientApplication, Configuration } from "@azure/msal-node";
import { NativeBrokerPlugin } from "@azure/msal-node-extensions";
const msalConfig: Configuration = {
auth: {
clientId: "your-client-id",
},
broker: {
nativeBrokerPlugin: new NativeBrokerPlugin(),
},
};
const pca = new PublicClientApplication(msalConfig);
Note
msal-node
non eseguirà il fallback al flusso non negoziato in caso di errore. Abilitare il flusso broker solo negli ambienti che lo supportano per evitare errori imprevisti.
Un esempio funzionante è disponibile nell'esempio auth-code-cli-brokered-app.
Relazione padre-figlio della finestra
Affinché i prompt di autenticazione vengano visualizzati sopra l'applicazione chiamante e impediscano ulteriori interazioni, fornire l'handle della finestra dell'applicazione all'API acquireTokenInteractive.
Per le app CLI, viene effettuato internamente un tentativo, per quanto possibile, di individuare l'handle della finestra, ma il risultato non è affidabile.
Se si usa Electron, usare l'API getNativeWindowHandle e passare il risultato in acquireTokenInteractive:
import { BrowserWindow } from "electron";
const win = new BrowserWindow();
const pca = new PublicClientApplication(msalConfig);
pca.acquireTokenInteractive({
windowHandle: win.getNativeWindowHandle(),
});
Dimostrazione del possesso
La prova di possesso del token di accesso (PoP) è supportata durante l'acquisizione di token tramite il broker nativo. Per richiedere un token PoP, aggiungere le proprietà seguenti all'oggetto richiesta fornito a acquireTokenInteractive o acquireTokenSilent:
Parametri della richiesta AT PoP
| Name | Description | Obbligatorio |
|---|---|---|
authenticationScheme |
Indica se MSAL deve acquisire un token Bearer o PoP. Il valore predefinito è Bearer. |
Obbligatorio |
resourceRequestMethod |
Nome all-caps del metodo HTTP della richiesta che userà il token firmato (GET, POST, PUTe così via) |
Obbligatorio |
resourceRequestUri |
URL della risorsa protetta per cui viene emesso il token di accesso | Obbligatorio |
shrNonce |
Un timestamp generato dal server e firmato, codificato Base64URL sotto forma di stringa. Questo nonce viene usato per attenuare l'asimmetria del clock e gli attacchi di spostamento temporale destinati a abilitare la pre-generazione del token PoP. | Facoltativo |
Esempio di utilizzo
In questo esempio viene richiesto un token di verifica del possesso impostando lo schema di autenticazione e le proprietà delle richieste HTTP firmate:
import { PublicClientApplication, Configuration, AuthenticationScheme } from "@azure/msal-node";
import { NativeBrokerPlugin } from "@azure/msal-node-extensions";
const msalConfig: Configuration = {
auth: {
clientId: "your-client-id",
},
broker: {
nativeBrokerPlugin: new NativeBrokerPlugin(),
},
};
const pca = new PublicClientApplication(msalConfig);
const popTokenRequest = {
scopes: ["User.Read"],
authenticationScheme: AuthenticationScheme.POP,
resourceRequestMethod: "POST",
resourceRequestUri: "YOUR_RESOURCE_ENDPOINT",
shrNonce: "NONCE_ACQUIRED_FROM_RESOURCE_SERVER",
};
pca.acquireTokenInteractive(popTokenRequest);
pca.acquireTokenSilent(popTokenRequest);
Note
La prova di possesso del token di accesso è supportata solo tramite il flusso broker nativo e non è disponibile nel flusso non negoziato.
Differenze quando si usa il broker Windows
Esistono alcuni aspetti che possono comportarsi in modo diverso durante l'acquisizione di token tramite il broker nativo:
- Il
forceRefreshparametro peracquireTokenSilentle chiamate non è supportato. È possibile ricevere un token memorizzato nella cache dal broker indipendentemente da ciò che questo flag è impostato su. - Se il broker deve richiedere l'interazione all'utente, viene visualizzata una richiesta di sistema. In questo modo l'esperienza utente viene modificata perché l'autenticazione non si verifica in una finestra del browser.
- La prova di possesso del token di accesso è supportata dal broker, ma non è supportata dal flusso non negoziato.