1

MVC WebアプリケーションのOffice365アプリケーションから電子メールをダウンロードしようとしています。 Azure Active Directoryでアプリの権限を設定することには苦労しています。アクセス許可には「すべてのメールボックスでメールを読む」というメッセージが表示されますが、アクセスできるメールボックスを選択する必要があります。Office365アプリケーションの制限「特定のメールボックスへのメールをすべて読む」

誰かがAADのアクセス許可を設定する上でより具体的なことを知っていますか?助けてくれてありがとう。

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

答えて

1

認証するためにクライアント資格フローを使用アプリは、特定の電子メールを読むためのアプリを制限サポートしていません。

しかし、あなたが働いているシナリオを共有してもいいですか? クライアントの資格情報のフローは、アプリが安全な環境で動作している自信のあるアプリに使用されます。悪意のあるユーザーが公開したくない情報にアクセスするためのトークンを取得することはできません。したがって、自分のアプリでリソースを制限することができます。それが役に立つと願っています。

+0

こんにちは、あなたの助けをもう一度!私のユースケースは、特定のメールボックスからメールをダウンロードする必要があることです(メールを受信して​​MVCアプリに保存する必要があります。メールを使用することはできません)。しかし、セキュリティ上の理由から、私はAD内のすべてのメールボックスに対してオープントンネルを作成し、ClientCredentialの電子メールアドレスだけでアクセスを制限することはできません。それはあまりにも脆弱ですから。それは私が知っている会社の電子メールアドレスからのすべての電子メールへの開発者アクセスとして私を与えるでしょう。 – Mastenka

+0

また、ClientCredentialワークフローでメールボックスのパスワードを挿入する手順が必要な場合は、十分な保護になります。私は他のメールボックスを読むことができなかったので、私はパスワードを持っているものだけを読みました。 – Mastenka

+0

開発者がすべてのメッセージを受け取らないようにするには、いくつかの方法があります。まず、製品テナントと開発環境を分けることができます。次に、app-tokenをテスト目的の代理トークンに置き換えることもできます。 3番目は、自分でテストデータサーバーを構築できるということです。 –

関連する問題