授予从应用程序访问共享邮箱的权限

时间:2018-12-01 21:04:53

标签: javascript azure-active-directory office365 azure-functions microsoft-flow

Within Office 365 its apparently not possible to assign a security group to a shared mailbox。这意味着所有用户都需要手动添加到共享邮箱中,这很麻烦。

However, Microsoft Graph appears to offer a way to subscribe to changes to a given group。结果,我的想法是构建一个简单的azure函数应用程序,当从特定组中添加/删除某人时,它会从Microsoft Graph接收Web挂接,并迅速从共享邮箱列表中添加/删除用户。

我遇到的问题是Microsoft Graph似乎没有用于授予用户对共享邮箱访问权限的API调用;而且我还找不到其他允许它的Microsoft API。

The only way I've discovered that can even do this programmaticly is with PowerShell,这要求我创建一个用户进行身份验证,而不是授予应用程序访问权限。 PowerShell现在也仅对Azure Functions提供实验性支持,我甚至不确定Azure Functions是否支持Exchange Online PowerShell调用,或者是否需要安装它。

有人知道一种专门用于REST调用或JavaScript的方法,还是更好的方法是借助Microsoft Flow无需编写代码?

如果我很快无法在首选方法上得到任何答案,除了可以使用Azure函数或Microsoft Flow和PowerShell实现此解决方案之外,我将提供解决方案。

1 个答案:

答案 0 :(得分:1)

可以使用Azure自动化代替Azure功能来创建将执行PowerShell代码的Azure Runbook。

Runbooks允许您导入模块,从而为您提供执行Exchange Online PowerShell所需的所有功能。它还允许您以正确的权限级别存储帐户的凭据。 (在测试时,您可以使用Exchange服务管理员帐户或全局管理员)。

因此,您可以创建一个Azure AD用户,使用Exchange RBAC权限将其范围缩小到仅出于安全原因有权执行该操作,然后将该用户的凭据存储在Runbook凭据功能中。

Runbook随后可以是executed from a webhook

一个小提示,您不能添加安全组,但是可以添加已启用邮件的安全组并为其授予权限。可以从Exchange的全局地址列表中隐藏该组,而只需在租户的.onmicrosoft.com域上使用一些虚假邮件地址即可。

仅需注意,这种使用组权限的方法确实为用户提供了正确的访问权限,但是,邮箱不会自动添加到Outlook。 原因是Exchange将自动映射标志添加到您赋予邮箱访问权限的对象。但是,在组上设置此标志不会递归,也不会在用户上添加标志,因此用户需要手动进入Outlook并告诉它打开邮箱。

如何在Office 365中手动测试
确认能够正常工作2018年3月12日

  1. 在Office 365中添加启用了新邮件的安全组。
  2. 在Office 365中创建新的共享邮箱。
  3. 将用户添加到已启用邮件的安全组。
  4. 打开以您添加到已启用邮件的安全组中的用户身份登录的OWA
  5. 选择“ 打开另一个邮箱”,然后选择我的共享邮箱。

这是测试权限是否已保留的最简单方法。但是请注意,在桌面版Outlook中,由于auotmapping标志不会保留,用户需要在设置页中手动添加邮箱。

还请注意Exchange Online复制时间。在最坏的情况下,所有内容可能最多需要30分钟才能正常传播,但通常只能在5分钟内生效。