1

Ich versuche, E-Mails über die Office365 App in der MVC Web App herunterzuladen. Und ich habe Probleme, die App-Berechtigungen für Azure Active Directory zu konfigurieren. Die Berechtigung lautet: "Mail in allen Mailboxen lesen", aber ich möchte auswählen, auf welche Mailboxen zugegriffen/gelesen werden kann.Office365-App einschränken "Mail in allen Mailboxen lesen" Berechtigung für bestimmte Mailbox

Kennt jemand ho spezifischer beim Einrichten von Berechtigungen in AAD? Danke für jede Hilfe.

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

Antwort

1

Die App, die den Client-Credential Fluss verwendet zur Authentifizierung nicht unterstützt die die App beschränken die spezifischen E-Mails zu lesen.

Aber würde es Ihnen etwas ausmachen, das Szenario zu teilen, an dem Sie arbeiten? Der Client Credential Flow wird für die sichere App verwendet, was bedeutet, dass die App in einer sicheren Umgebung arbeitet. Es gibt keinen böswilligen Benutzer, der das Token für den Zugriff auf die Informationen erhalten könnte, die Sie nicht veröffentlichen möchten. Sie können also die Ressource in Ihrer eigenen App beschränken. Ich hoffe, es ist hilfreich.

+0

Hallo Fei, thx wieder für Ihre Hilfe! Mein Anwendungsfall ist, dass ich E-Mails von bestimmten Mailboxen herunterladen muss (ich muss E-Mails empfangen und sie in der MVC App speichern, es müssen E-Mails sein, die ich API nicht verwenden kann [Das wäre der beste Weg dazu]]. Aus Sicherheitsgründen kann ich jedoch keinen offenen Tunnel zu allen Postfächern in AD erstellen und den Zugriff nur per E-Mail-Adresse für ClientCredential einschränken. Weil es zu sehr verwundbar ist. Es würde mir als Entwickler Zugriff auf alle E-Mails von Firmen-E-Mail-Adressen geben, die ich kenne. – Mastenka

+0

Oder wenn der ClientCredential-Workflow den Schritt zum Einfügen eines Kennworts für ein Postfach erfordern würde, wäre das ein ausreichender Schutz. Weil ich andere Postfächer nicht lesen konnte, nur die, zu denen ich ein Passwort habe. – Mastenka

+0

Es gibt mehrere Möglichkeiten, die Entwickler zu vermeiden, alle Nachrichten zu erhalten. Zunächst können Sie die Entwicklungsumgebung mit dem Produktmandanten trennen. Zweitens können Sie das App-Token auch zu Testzwecken durch ein Delegiert-Token ersetzen. Die dritte Möglichkeit besteht darin, dass Sie selbst einen Testdatenserver erstellen können. –