Connecter des utilisateurs avec la bibliothèque d’authentification Microsoft

Effectué

Vous avez inscrit votre application web auprès de Microsoft Entra ID. Vous pouvez à présent ajouter le code d’authentification pour connecter les utilisateurs à votre application et souhaitez utilisez un kit SDK capable de gérer les détails de l’authentification pour vous. Dans cette unité, vous découvrez la bibliothèque d’authentification Microsoft pour Java (MSAL4J), puis apprendre à l’utiliser pour l’authentification.

Bibliothèque d’authentification Microsoft pour Java

La bibliothèque d’authentification Microsoft pour Java (MSAL4J) permet aux applications de connecter des utilisateurs ou des applications avec des identités Microsoft (Microsoft Entra ID, comptes Microsoft et comptes Azure Active Directory B2C), puis d’obtenir des jetons pour appeler des API Microsoft ou vos propres API inscrites auprès de Microsoft Entra ID. Elle repose sur les protocoles OAuth2 et OpenID Connect standard.

La bibliothèque fournit des API pratiques qui prennent en charge l’authentification avec Microsoft Entra ID pour différents types d’applications :

  • Applications web
  • Services de démon
  • Applications en ligne de commande
  • Applications de bureau

Initialiser l’objet MSAL

Pour commencer à utiliser MSAL, vous devez initialiser et configurer l’objet MSAL dans votre code d’application.

MSAL représente les applications clientes sous la forme de clients publics et de clients confidentiels, ceux-ci se distinguant par leur capacité à s’authentifier de manière sécurisée auprès du serveur d’autorisation et à maintenir la confidentialité de leurs informations d’identification client.

Les applications clientes confidentielles sont des applications qui s’exécutent sur des serveurs (applications web, applications API web, voire applications de service/démon). Les clients confidentiels peuvent contenir des secrets d’application au moment de la configuration.

Vous pouvez créer une instance du client confidentiel comme ceci :

IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication app = ConfidentialClientApplication
                                        .builder(CLIENT_ID, credential)
                                        .authority(AUTHORITY)
                                        .build();
  • CLIENT_ID : L’ID client est l’ID d’application (client) unique que Microsoft Entra ID attribue à votre application lors de l’inscription de l’application.
  • CLIENT_SECRET : secret client pour l’application cliente confidentielle, créé lors de l’inscription de l’application.
  • AUTHORITY : l’autorité est une URL qui indique un annuaire à partir duquel MSAL peut demander des jetons. Elle est composée de l’instance du fournisseur d’identité et de l’audience de connexion pour l’application.

Acquérir des jetons d’authentification avec MSAL

MSAL fournit des méthodes acquireToken pour lancer le flux d’authentification et retourner un AuthenticationResult contenant les jetons d’authentification.

Quand un utilisateur termine la connexion, un jeton d’ID est retourné dans le résultat de l’authentification avec des revendications d’authentification de base (nom d’utilisateur principal, e-mail, et bien plus encore).

Voici un exemple d’acquisition de jetons avec la bibliothèque 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();
  • URI_REDIRECTION : L’URI de redirection est l’URI auquel le fournisseur d’identité renvoie les jetons de sécurité. Il doit correspondre à l’URI de redirection dans l’inscription de l’application Microsoft Entra.
  • ÉTENDUES : Les étendues sont des autorisations demandées par l’application. Normalement, les trois étendues openid profile offline_access suffisent pour recevoir en réponse un jeton d’ID pour une connexion utilisateur. Elles sont définies par défaut par MSAL.

Utilisez les méthodes acquireToken de votre application quand vous lancez un flux de connexion pour les utilisateurs et appelez des API pour accéder aux données.