1

J'essaie de télécharger des e-mails via l'application Office365 dans l'application Web MVC. Et je suis aux prises avec la configuration des autorisations d'application sur le répertoire Azure Active. La permission dit: "Lire le courrier dans Toutes les boîtes aux lettres" mais je veux choisir les boîtes aux lettres auxquelles il peut accéder/lire.Restreindre l'application Office365 «Lire le courrier dans toutes les boîtes aux lettres» de la boîte aux lettres spécifique

Est-ce que quelqu'un sait ho être plus précis dans la configuration des autorisations dans AAD? Merci pour toute aide.

string authority = "https://login.microsoftonline.com/" + SettingsHelper.TenantId + "/oauth2/token"; 

var credential = new ClientCredential(SettingsHelper.ClientId, SettingsHelper.ClientSecret); 
AuthenticationContext authContext = new AuthenticationContext(authority); 
var authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com", credential); 
var graphserviceClient = new GraphServiceClient(
    new DelegateAuthenticationProvider(
      (requestMessage) => 
      { 
       requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", authResult.AccessToken); 

       return Task.FromResult(0); 
      })); 

//This is Ok. I want to read this. 
var allowedEmails = await graphserviceClient.Users["[email protected]"].Messages.Request().GetAsync(); 

//This is forbidden. I want to restrict this on AAD level. 
var dissabledEmails = await graphserviceClient.Users["[email protected]"].Messages.Request().GetAsync(); 

enter image description here

enter image description here

Répondre

1

L'application qui a utilisé le flux d'informations d'identification client pour authentifier ne supporte pas la limite l'application pour lire les e-mails spécifiques. Mais pourriez-vous partager le scénario dans lequel vous travaillez? Le flux Credential Client est utilisé pour l'application Confiant, ce qui signifie que l'application fonctionne dans un environnement sécurisé. Aucun utilisateur malveillant ne peut obtenir le jeton pour accéder aux informations que vous ne souhaitez pas publier. Vous pouvez donc limiter la ressource dans votre propre application. J'espère que c'est utile.

+0

Salut Fei, Merci encore pour votre aide! Mon cas d'utilisation est que j'ai besoin de télécharger des courriels de boîte aux lettres spécifique (j'ai besoin de recevoir des courriels et de les stocker dans l'application MVC, il faut que je n'utilise pas l'API [Ce serait la meilleure façon de le faire ...]). Mais pour des raisons de sécurité, je ne peux pas créer un tunnel ouvert à toutes les boîtes aux lettres dans AD et restreindre l'accès uniquement par adresse e-mail pour ClientCredential. Parce que c'est trop vulnérable. Cela me donnerait accès en tant qu'éditeur à tous les courriels provenant d'adresses électroniques d'entreprises que je connais. – Mastenka

+0

Ou si le flux de travail ClientCredential requiert l'insertion d'un mot de passe pour une boîte aux lettres, cela constituerait une protection suffisante. Parce que je ne pouvais pas lire d'autres boîtes aux lettres, seulement celles pour lesquelles j'ai un mot de passe. – Mastenka

+0

Il existe plusieurs façons d'éviter aux développeurs d'obtenir tous les messages. Tout d'abord, vous pouvez séparer l'environnement de développement du locataire du produit. Deuxièmement, vous pouvez également remplacer le jeton d'application par un jeton de délégué à des fins de test. Le troisième est que vous pouvez créer un serveur de données de test vous-même. –