Consentire l'accesso degli utenti con Microsoft Authentication Library
L'applicazione Web è stata registrata con Microsoft Entra ID. È ora possibile aggiungere il codice di autenticazione per consentire agli utenti di accedere all'applicazione. Si vuole usare un SDK in grado di gestire automaticamente i dettagli dell'autenticazione. In questa unità vengono fornite informazioni su Microsoft Authentication Library per Java (MSAL4J) e su come consente di eseguire l'autenticazione.
Microsoft Authentication Library per Java
Microsoft Authentication Library per Java (MSAL4J) consente alle applicazioni di lasciar accedere utenti o app con le identità Microsoft (Microsoft Entra ID, account Microsoft e account Azure Active Directory B2C) e di ottenere i token per chiamare le API Microsoft o le proprie API registrate con Microsoft Entra ID. Si basa sui protocolli OAuth2 e OpenID Connect standard di settore.
La libreria fornisce pratiche API che abilitano l'autenticazione con Microsoft Entra ID per tipi diversi di applicazioni:
- Applicazioni Web
- Servizi daemon
- Applicazioni della riga di comando
- Applicazioni desktop
Inizializzare l'oggetto MSAL
Per iniziare a usare MSAL, è necessario inizializzare e configurare l'oggetto MSAL nel codice dell'applicazione.
MSAL rappresenta le applicazioni client come client pubblici e client riservati, che si distinguono per la possibilità di eseguire l'autenticazione sicura con il server di autorizzazione e mantenere la riservatezza delle credenziali client.
Le applicazioni client riservate sono app eseguite su server (app Web, app Web per le API o persino app di servizio/daemon). I client riservati possono contenere segreti dell'applicazione in fase di configurazione.
È possibile creare un'istanza del client riservato come indicato di seguito:
IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication app = ConfidentialClientApplication
.builder(CLIENT_ID, credential)
.authority(AUTHORITY)
.build();
- CLIENT_ID: L'ID client è l'ID applicazione (client) univoco assegnato all'app da Microsoft Entra ID al momento della registrazione dell'app.
- CLIENT_SECRET: segreto client per l'app client riservata, creato durante la registrazione dell'app.
- AUTHORITY: l'autorità è un URL che indica una directory a cui MSAL può richiedere i token. È costituito dall'istanza del provider di identità e dai destinatari dell'accesso per l'app.
Acquisire i token di autenticazione con MSAL
MSAL fornisce i metodi acquireToken
per avviare il flusso di autenticazione e restituire un elemento AuthenticationResult
contenente i token di autenticazione.
Quando un utente completa l'accesso, nel risultato dell'autenticazione viene restituito un token ID contenente alcune attestazioni di autenticazione di base, ad esempio il nome dell'entità utente, l'indirizzo di posta elettronica e così via.
Il seguente è un esempio di acquisizione di token con MSAL:
final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
.builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES))
.build();
final IAuthenticationResult result = app.acquireToken(authParams).get();
- REDIRECT_URI: L'URI di reindirizzamento è l'URI a cui il provider di identità invia nuovamente i token di sicurezza. Deve corrispondere all'URI di reindirizzamento nella registrazione dell'app Microsoft Entra.
- AMBITI: Gli ambiti sono autorizzazioni richieste dall'applicazione. In genere, i tre ambiti
openid profile offline_access
sono sufficienti per ricevere una risposta del token ID per un accesso utente e vengono configurati da MSAL per impostazione predefinita.
Usare i metodi acquireToken
nell'applicazione quando si avvia un flusso di accesso per gli utenti e si chiamano le API per accedere ai dati.