是否可以将Azure AD web应用程序的应用程序API权限限制为一个帐户?

是否可以将Azure AD web应用程序的应用程序API权限限制为一个帐户?,azure,azure-active-directory,microsoft-graph-api,azure-ad-graph-api,outlook-graph-api,Azure,Azure Active Directory,Microsoft Graph Api,Azure Ad Graph Api,Outlook Graph Api,我正在开发一个AWS Lambda函数,它需要定期访问Outlook 365收件箱。我正在使用Graph API访问收件箱 我使用Azure Active Directory管理中心创建了一个新的Azure AD web应用程序注册。()在为我的应用程序分配API权限时,我可以选择委派权限和应用程序权限。我无法使用委派权限,因为我的代码将在没有任何用户交互的情况下运行 选择应用程序权限时,我无法找到将权限限制为一个用户帐户的方法。例如,如果我尝试授予应用程序Mail.Read应用程序权限,它将访

我正在开发一个AWS Lambda函数,它需要定期访问Outlook 365收件箱。我正在使用Graph API访问收件箱

我使用Azure Active Directory管理中心创建了一个新的Azure AD web应用程序注册。()在为我的应用程序分配API权限时,我可以选择委派权限和应用程序权限。我无法使用委派权限,因为我的代码将在没有任何用户交互的情况下运行

选择应用程序权限时,我无法找到将权限限制为一个用户帐户的方法。例如,如果我尝试授予应用程序Mail.Read应用程序权限,它将访问企业中的所有邮箱。或者我对许可描述的解释有误

如何将我的应用程序API权限授予一个用户的邮箱


湿婆的评论解决了这个问题,添加它作为结束问题的答案:

一些应用程序使用自己的身份而不是代表用户调用Microsoft Graph。例如,Mail.Read应用程序权限允许应用程序在没有登录用户的情况下读取所有邮箱中的邮件

用于限制应用程序对特定邮箱集的访问

1.连接到Exchange Online PowerShell

Connect-ExchangeOnline -UserPrincipalName <UPN> [-ExchangeEnvironmentName <Value>] [-DelegatedOrganization <String>] [-PSSessionOption $ProxyOptions]

有关
新应用程序访问策略的更多详细信息,请参阅。

谢谢Shiva和Pamela。我将为偶然发现这条线索的其他人详细说明这些步骤

创建启用邮件的组:

  • 登录到
  • 单击组>活动组
  • 单击添加组并选择邮件启用安全性
  • 请提供组的名称,然后提供组的电子邮件地址
  • 将共享法律邮箱作为成员添加到此新创建的组
  • 注册和配置新应用程序:

  • 登录到
  • 单击Azure Active Directory。这会将您带到组织的目录
  • 点击应用注册
  • 点击新注册
  • 请提供应用程序的名称
  • 将支持的帐户类型选择为单租户
  • 提供重定向URI(web)作为
    • 这对你的应用来说可能无关紧要,但需要提供重定向URI
  • 点击注册。请复制并存储应用程序(客户端)ID和目录(租户)ID
  • 单击API权限,然后单击添加权限
  • 选择Microsoft Graph并选择权限类型作为应用程序权限
  • 从列表中选择Mail.Read权限,然后单击添加权限
  • 在“应用程序的配置权限”下,单击“为您的组织授予管理员许可”
  • 单击证书和机密。单击New client secret并设置到期日,最好设置为Never
  • 请复制并存储秘密值
  • 限制应用程序访问:

  • 在Exchange管理员的Windows计算机上以提升的权限打开PowerShell

  • 允许执行由受信任的发布者签名的脚本。使用以下命令执行此操作

    • Set ExecutionPolicy RemoteSigned
  • 使用以下命令安装EXO(ExchangeOnline)V2模块

    • 安装模块-名称交换在线管理
  • 加载EXO V2模块

    • 导入模块交换在线管理
  • 使用管理员帐户连接到Exchange Online PowerShell

    • Connect-ExchangeOnline-UserPrincipalName-admin-account@yourorg.com
  • 这将打开一个SSO对话框。使用管理员帐户登录

  • 在下一步中,我们需要在步骤4中创建的组电子邮件地址和步骤13中创建的应用程序客户端ID

  • 使用以下命令将应用程序的API权限仅限于组成员

    • 新应用程序访问策略-AppId client-id-from-step-13-PolicyScopeGroupId组电子邮件from-step-4@yourorg.com-AccessRight RestrictAccess-说明“将应用程序限制到组合法收件箱。”
  • 就这样!对应用程序访问策略的更改可能需要30分钟才能在Graph REST API调用中生效

  • 注销ExchangeOnline PowerShell

    • 断开ExchangeOnline

  • 请检查这是否有帮助。是的,尝试上面Shiva建议的方法,它将允许您限制邮箱访问。如果你需要帮助,一定要告诉我。你用湿婆的话解决了吗?这里有更新吗?谢谢!这看起来正是我需要的。我正在与Exchange管理员联系,因为我没有执行Exchange Online cmdlet的权限。我会在这里发布更新。
    New-ApplicationAccessPolicy -AppId e7e4dbfc-046f-4074-9b3b-2ae8f144f59b -PolicyScopeGroupId EvenUsers@contoso.com -AccessRight RestrictAccess -Description "Restrict this app to members of distribution group EvenUsers."