当前位置: 首页 > 知识库问答 >
问题:

如何限制 Office 365 应用的邮箱访问

上官霄
2023-03-14

我试图找出如何限制应用程序可以访问哪个邮箱。

我遵循了这个指南并使用了仅应用程序身份验证:https://learn . Microsoft . com/en-us/exchange/client-developer/exchange-we b-services/how-to-authenticate-an-EWS-application-by-using-oauth

根据留档,我必须设置full_access_as_app权限。但是信息文本指出:“允许应用程序在没有登录用户的情况下通过Exchange Web Services完全访问所有邮箱。”

我可以读取邮箱,但我想限制我的应用程序可以访问的邮箱。有人能给我指出正确的方向吗?

谢谢。

我的代码:

   static async System.Threading.Tasks.Task Main(string[] args)
    {
        // Using Microsoft.Identity.Client 4.22.0
        var cca = ConfidentialClientApplicationBuilder
            .Create(ConfigurationManager.AppSettings["appId"])
            .WithClientSecret(ConfigurationManager.AppSettings["clientSecret"])
            .WithTenantId(ConfigurationManager.AppSettings["tenantId"])
            .Build();

        var ewsScopes = new string[] { "https://outlook.office365.com/.default" };

        try
        {
            var authResult = await cca.AcquireTokenForClient(ewsScopes)
                .ExecuteAsync();

            // Configure the ExchangeService with the access token
            var ewsClient = new ExchangeService
            {
                Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx"),
                Credentials = new OAuthCredentials(authResult.AccessToken),
                ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "emailaddress@domain.com")
            };

            var mailbox = new Mailbox("emailaddress@domain.com");
            var folderId = new FolderId(WellKnownFolderName.Inbox, mailbox);

            var inbox = Folder.Bind(ewsClient, folderId);

            if (inbox != null)
            {
                FindItemsResults<Item> items = inbox.FindItems(new ItemView(100));

                foreach (var item in items)
                {
                    Console.WriteLine(item.Subject);
                }
            }
        }
        catch (MsalException ex)
        {
            Console.WriteLine($"Error acquiring access token: {ex}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex}");
        }

        if (System.Diagnostics.Debugger.IsAttached)
        {
            Console.WriteLine("Hit any key to exit...");
            Console.ReadKey();
        }
    }

共有1个答案

白和泽
2023-03-14

您可以按照特定 Exchange Online 邮箱的范围限定应用程序权限进行操作。

尽管此文档位于Microsoft GFIG下,但它也应适用于https://outlook.office365.com模块,因为此设置用于应用注册和O365邮箱。

您需要创建一个应用程序访问策略来设置< code >-access right restrict access 。

然后测试新创建的应用程序访问策略,该策略限制对用户user1@contoso.com的访问。

Test-ApplicationAccessPolicy -Identity user1@contoso.com -AppId e7e4dbfc-046-4074-9b3b-2ae8f144f59b
 类似资料:
  • 问题内容: 我正在尝试编写一个Java应用程序,该应用程序将访问其他 共享 邮箱以阅读电子邮件并执行其他活动。我阅读自己的INBOX(或其文件夹和内容)没有问题,但是很难找到有关如何访问(并最终解析/读取)共享邮箱的信息。 问题答案: 在其他答案的帮助下,我找到了以下解决方案,该解决方案适用于com.sun.mail:javax.mail:1.6.2 使用javax.mail:mail:1.4.7

  • 你能告诉我Office365 REST API和EWS Java API之间的区别吗? 我为REST API搜索Java库,但没有可用的库。 两个月前,我在ews java api中提出了一个问题,但仍然没有得到他们的任何回应。 您能否建议任何可靠的解决方案来使用office365 API从Java应用程序。 使用我们需要注册我们的应用程序与Azure,我们可以重新Giter是免费的还是付费的。如

  • 我们是否可以基于位置限制用户界面的特定流(基于位置的访问控制)? 用户界面的一部分及其功能只能在用户处于特定地理位置时才可用?我们计划采用基于网络的白名单IP地址,但由于网络基础设施的不足和过多的开销。我们得出结论,基于网络的限制并不是一个有效的解决方案。 我们还研究了基于GPS的解决方案,在这种情况下,我们不能依赖浏览器应用程序来获得适当的位置。 如果你们中的任何一个曾经在类似的技术上工作过,请

  • 我能够创建一个进程邮箱,并且能够通过https://ExchangeServer/owa/processmailbox@domain.com访问,然后我将提供我的凭据,并且能够登录。 但我无法通过EWS访问。它说SMTP地址没有与之关联的邮箱。 我可以用相同的代码访问我的收件箱。

  • 我们的一个客户正在使用office365组,我们希望实现以编程方式管理该组内的文件。 我们正在使用SharePoint API来管理Office365站点中的其他文件,但我们无法确定如何为Office365组做到这一点。 我们尝试了图形API(即调用<代码>https://graph.microsoft.com/v1.0/groups/ 通过查看组在Office365中是如何实现的,看起来它们只是

  • 我下载了Office 365 Connect ASP。NET MVC示例代码http://dev.office.com/code-samples-detail/5985,将其注册为Azure Active Directory中的应用程序(我具有全局管理员权限),并授予其所需的权限-“登录并读取用户配置文件”和“以用户身份发送邮件”(无其他权限),以及配置了web。配置为“ClientID”和“Cl