Comment obtenir un jeton d’accès OAuth2 pour l’API EWS dans une application service/daemon
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.