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.
L'autenticazione negoziata raccoglie le credenziali utente usando il broker di autenticazione di sistema per autenticare un'app. Un gestore di autenticazione di sistema è un'app in esecuzione nel computer di un utente che gestisce gli handshake di autenticazione e la manutenzione dei token per tutti gli account connessi.
L'autenticazione negoziata offre i vantaggi seguenti:
- Enables Single Sign-On (SSO): Consente alle app di semplificare l'autenticazione degli utenti con Microsoft Entra ID e protegge i token di aggiornamento Microsoft Entra ID dall'esfiltrazione e dall'uso improprio.
- Sicurezza avanzata: Molti miglioramenti della sicurezza vengono distribuiti con il broker, senza dover aggiornare la logica dell'app.
- Supporto avanzato delle funzionalità: Con l'aiuto del broker, gli sviluppatori possono accedere a funzionalità avanzate del sistema operativo e del servizio.
- Integrazione del sistema: Applicazioni che usano il plug-and-play broker con la selezione account predefinita, consentendo all'utente di selezionare rapidamente un account esistente invece di immettere di nuovo le stesse credenziali più e più.
- Protezione token: Assicura che i token di aggiornamento siano associati al dispositivo e consenta alle app di acquisire token di accesso associati al dispositivo. Vedere Protezione dei token.
Windows fornisce un broker di autenticazione denominato Web Account Manager (WAM). WAM consente ai provider di identità come Microsoft Entra ID di collegarsi in modo nativo al sistema operativo e fornire servizi di accesso sicuri alle app. L'autenticazione negoziata abilita l'app per tutte le operazioni consentite dalle credenziali di accesso interattive.
Sono supportati account Microsoft personali e account aziendali o dell'istituto di istruzione. Nelle versioni di Windows supportate, l'interfaccia utente predefinita basata su browser viene sostituita con un'esperienza di autenticazione più fluida, simile alle app di Windows predefinite.
Configurare l'app per l'autenticazione negoziata
Per abilitare l'autenticazione negoziata nell'applicazione, seguire questa procedura:
Nel portale Azure passare a Microsoft Entra ID e selezionare App registrations nel menu a sinistra.
Selezionare la registrazione per l'app, quindi selezionare Autenticazione.
Aggiungere l'URI di reindirizzamento appropriato alla registrazione dell'app tramite una configurazione della piattaforma:
In Configurazioni della piattaforma selezionare + Aggiungi una piattaforma.
In Configura piattaforme selezionare il riquadro per il tipo di applicazione (piattaforma) per configurarne le impostazioni, ad esempio applicazioni per dispositivi mobili e desktop.
In URI di reindirizzamento personalizzati immettere l'URI di reindirizzamento seguente:
ms-appx-web://Microsoft.AAD.BrokerPlugin/{your_client_id}Sostituire
{your_client_id}con l'ID applicazione (client) del riquadro Panoramica della registrazione dell'app.Seleziona Configura.
Per altre informazioni, vedere Aggiungere un URI di reindirizzamento a una registrazione dell'app.
Tornare al riquadro Autenticazione in Impostazioni avanzate selezionare Sì per Consenti flussi client pubblici.
Selezionare Salva per applicare le modifiche.
Per autorizzare l'applicazione per risorse specifiche, passare alla risorsa in questione, selezionare Autorizzazioni API e abilitare Microsoft Graph e altre risorse a cui si vuole accedere.
Importante
È anche necessario essere l'amministratore del tenant per concedere il consenso all'applicazione quando si accede per la prima volta.
Assegnazione di ruoli
Per eseguire correttamente il codice dell'app con l'autenticazione appoggiata, concedi le autorizzazioni all'account utente utilizzando il controllo degli accessi in base al ruolo di Azure (RBAC). Assegnare un ruolo appropriato all'account utente per il servizio Azure pertinente. Per esempio:
- Azure Blob Storage: Assegnare il ruolo Storage Account Data Contributor.
- Azure Key Vault: Assegnare il ruolo Key Vault Secrets Officer.
Se viene specificata un'app, deve disporre delle autorizzazioni API impostate per user_impersonation Access Azure Storage (passaggio 6 della sezione precedente). Questa autorizzazione API consente all'app di accedere all'archiviazione Azure per conto dell'utente connesso dopo che il consenso viene concesso durante l'accesso.
Implementare il codice
La libreria di identità Azure supporta l'autenticazione negoziata usando InteractiveBrowserCredential. La libreria azure-identity-broker fornisce InteractiveBrowserBrokerCredentialBuilder, che crea un oggetto InteractiveBrowserCredential in grado di usare il broker di autenticazione di sistema. Ad esempio, per usare l'autenticazione negoziata in un'app console Java per eseguire l'autenticazione a Azure Key Vault con SecretClient, seguire questa procedura:
Aggiungere la
azure-identity-brokerdipendenza alpom.xmlfile:<dependency> <groupId>com.azure</groupId> <artifactId>azure-identity-broker</artifactId> </dependency>Ottenere un riferimento alla finestra padre nella parte superiore della quale deve essere visualizzata la finestra di dialogo selezione account. Per esempio, vedere Ottenere un handle di finestra.
Creare un'istanza di
InteractiveBrowserCredentialusandoInteractiveBrowserBrokerCredentialBuilder:import com.azure.identity.InteractiveBrowserCredential; import com.azure.identity.broker.InteractiveBrowserBrokerCredentialBuilder; import com.azure.security.keyvault.secrets.SecretClient; import com.azure.security.keyvault.secrets.SecretClientBuilder; import com.azure.security.keyvault.secrets.models.KeyVaultSecret; long windowHandle = getWindowHandle(); // See examples below InteractiveBrowserCredential credential = new InteractiveBrowserBrokerCredentialBuilder() .setWindowHandle(windowHandle) .useDefaultBrokerAccount() .build(); SecretClient client = new SecretClientBuilder() .vaultUrl("https://<your-key-vault-name>.vault.azure.net") .credential(credential) .buildClient(); KeyVaultSecret secret = client.getSecret("MySecret"); System.out.println("Retrieved secret: " + secret.getName());
Nell'esempio precedente, useDefaultBrokerAccount acconsente esplicitamente a un flusso di autenticazione negoziata invisibile all'utente con l'account di sistema predefinito. In questo modo, l'utente non deve selezionare ripetutamente lo stesso account. Se l'opzione di autenticazione negoziata è silenziosa e fallisce, InteractiveBrowserCredential passa all'autenticazione interattiva negoziata.
Lo screenshot seguente mostra l'esperienza di autenticazione interattiva e negoziata alternativa:
Ottenere un handle di finestra
Quando si esegue l'autenticazione in modo interattivo tramite InteractiveBrowserCredential, è necessario un handle della finestra padre per assicurarsi che la finestra di dialogo di autenticazione venga visualizzata correttamente nella finestra che invia la richiesta.
Applicazione JavaFX
Per un'applicazione JavaFX, usare JNA (Java Native Access) per ottenere l'handle della finestra:
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef;
public long getWindowHandle(Stage stage) {
WinDef.HWND hwnd = User32.INSTANCE.FindWindow(null, stage.getTitle());
return Pointer.nativeValue(hwnd.getPointer());
}
Applicazione console
Per un'applicazione console in Windows, usare JNA per ottenere l'handle della finestra della console:
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.Kernel32;
import com.sun.jna.platform.win32.WinDef;
WinDef.HWND hwnd = Kernel32.INSTANCE.GetConsoleWindow();
long windowHandle = Pointer.nativeValue(hwnd.getPointer());