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

Is it possible to restrict the Application API permissions of an Azure AD web application to one account?

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

我使用 Azure Active Directory 管理中心创建了一个新的 Azure AD Web 应用程序注册。(https://aad.portal.azure.com/)在为我的应用程序分配 API 权限时,我可以选择委派权限和应用程序权限。我无法使用委派权限,因为我的代码将 运行 无需任何用户交互。

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

如何授予我的应用 API 对一个用户邮箱的权限?

此问题已由 Shiva 的评论解决,将其添加为关闭问题的答案:

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

Configuring ApplicationAccessPolicy用于限制应用程序访问一组特定的邮箱。

1.Connect 到 Exchange Online PowerShell

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

2.Identify 应用的客户端 ID 和启用邮件的安全组以限制应用的访问权限。

3.Create 一个应用程序访问策略。

New-ApplicationAccessPolicy -AppId e7e4dbfc-046f-4074-9b3b-2ae8f144f59b -PolicyScopeGroupId EvenUsers@contoso.com -AccessRight RestrictAccess -Description "Restrict this app to members of distribution group EvenUsers."

有关 New-ApplicationAccessPolicy 的更多详细信息,请参阅 here

谢谢湿婆和帕梅拉。我将为偶然发现此线程的其他人详细说明这些步骤。

正在创建启用邮件的群组:

  1. 登录https://admin.microsoft.com/
  2. 单击“组”>“活动组”。
  3. 单击添加组和 select 启用邮件的安全性。
  4. 提供群组名称,然后提供群组电子邮件地址。
  5. 将共享合法邮箱添加为这个新创建的组的成员。

正在注册和配置新应用程序:

  1. 登录https://aad.portal.azure.com/
  2. 单击 Azure Active Directory。这应该会将您带到您的组织目录。
  3. 点击应用程序注册。
  4. 点击新注册。
  5. 为应用程序提供一个名称。
  6. Select 支持的帐户类型为单一租户。
  7. 将重定向 URI(网络)提供为 https://login.microsoftonline.com/common/oauth2/nativeclient
    • 这对您的应用来说可能无关紧要,但需要提供重定向 URI。
  8. 点击注册。请复制并存储应用程序(客户端)ID 和目录(租户)ID。
  9. 单击 API 权限,然后单击添加权限。
  10. Select Microsoft Graph 和 select 权限类型为应用程序权限。
  11. 从列表中,select Mail.Read 权限并单击添加权限。
  12. 在为应用程序配置的权限下,单击为您的组织授予管理员许可。
  13. 单击“证书和机密”。单击“新建客户端密码”并设置到期时间,最好设置为“从不”。
  14. 请复制并存储秘密值。

限制应用程序访问:

  1. 在 Exchange 管理员的 Windows 机器上以提升的权限打开 PowerShell。

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

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

    • Install-Module -Name ExchangeOnlineManagement
  4. 加载 EXO V2 模块。

    • Import-Module ExchangeOnlineManagement
  5. 使用管理员帐户连接到 Exchange Online PowerShell。

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

  7. 对于下一步,我们需要在第 4 步中创建的组电子邮件地址和第 13 步中的应用程序客户端 ID。

  8. 使用以下命令将应用的 API 权限限制为仅群组成员。

    • New-ApplicationAccessPolicy -AppId client-id-from-step-13 -PolicyScopeGroupId group-email-from-step-4@yourorg.com -AccessRight RestrictAccess -Description "Restrict app to group Legal Inbox."
  9. 就是这样!对应用程序访问策略的更改最多可能需要 30 分钟才能在 Graph REST API 调用中生效。

  10. 注销 ExchangeOnline PowerShell。

    • Disconnect-ExchangeOnline