Comment obtenir un jeton d'accès OAuth2 pour l'API EWS dans une application service/daemon

Comment obtenir un jeton d’accès OAuth2 pour l’API EWS dans une application service/daemon


Source : Stack Overflow [office365]

Nous avions un problème similaire : nous voulions utiliser un compte de service pour nous connecter à une seule boîte aux lettres et effectuer certaines opérations avec l’API EWS (par exemple, rechercher dans le GAL) et full_access_as_app semblait excessif.
Heureusement, c’est possible :

Suivez les étapes normales de « délégation »

Et utilisez ceci pour obtenir un jeton via nom d’utilisateur/mot de passe :

...
var cred = new NetworkCredential("UserName", "Password");
var authResult = await pca.AcquireTokenByUsernamePassword(new string[] { "https://outlook.office.com/EWS.AccessAsUser.All" }, cred.UserName, cred.SecurePassword).ExecuteAsync();
...

  • Pour que cela fonctionne, vous devez activer « Traiter l’application comme un client public » sous « Authentification » > « Paramètres avancés » car cela utilise le « flux d’identification par mot de passe du propriétaire de la ressource ». (Cette réponse SO m’a beaucoup aidé !)

Avec cette configuration, nous avons pu utiliser une méthode « traditionnelle » par nom d’utilisateur/mot de passe, mais en utilisant OAuth et l’API EWS.