<p>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 <code>full_access_as_app</code> semblait excessif.<br>
Heureusement, c’est possible :</p>
<ul>
<li></li>
</ul>
<p>Suivez les étapes normales de <a href="https://learn.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-authenticate-an-ews-application-by-using-oauth">« délégation »</a></p>
<ul>
<li></li>
</ul>
<p>Et utilisez ceci pour obtenir un jeton via nom d’utilisateur/mot de passe :</p>
<pre><code class="lang-auto">...
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();
...
</code></pre>
<ul>
<li>Pour que cela fonctionne, vous <strong>devez</strong> 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 <a href="https://stackoverflow.com/questions/61018045/get-delegate-permission-in-msal-for-ews-without-publicclientapplicationbuilder-a">réponse SO</a> m’a beaucoup aidé !)</li>
</ul>
<p>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.</p>