Consentire l'accesso degli utenti con Microsoft Authentication Library
L'applicazione Web è stata registrata con Microsoft Entra ID. A questo punto è possibile aggiungere il codice di autenticazione per consentire l'accesso degli utenti nell'applicazione e si vuole usare un SDK in grado di gestire automaticamente i dettagli di autenticazione. In questa unità verranno fornite informazioni su Microsoft Authentication Library per Java (MSAL4J) e su come è utile per l'autenticazione.
Microsoft Authentication Library per Java
Microsoft Authentication Library per Java (MSAL4J) consente alle applicazioni di accedere a utenti o app con identità Microsoft (Microsoft Entra ID, account Microsoft e account Azure Active Directory B2C) e ottenere token per chiamare le API Microsoft o le PROPRIE API registrate con Microsoft Entra ID. Viene creato usando protocolli di Connessione OAuth2 e OpenID standard del 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, sarà 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 dal gruppo di destinatari di 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, viene restituito un token ID nel risultato dell'autenticazione contenente alcune attestazioni di autenticazione di base, ad esempio nome dell'entità utente, posta elettronica e così via.
Ecco 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à invierà nuovamente i token di sicurezza. Deve corrispondere all'URI di reindirizzamento nella registrazione dell'app Microsoft Entra.
- SCOPES: 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 acquireToken
metodi nell'applicazione quando si avvia un flusso di accesso per gli utenti e le API chiamanti per accedere ai dati.