Consentire l'accesso degli utenti con Microsoft Authentication Library

Completato

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.