1

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

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

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

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

Azure AD 应用 API 权限

4

2 回答 2

1

Shiva 的评论解决了这个问题,将其添加为关闭问题的答案:

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

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

1.连接到 Exchange Online PowerShell

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

2.识别应用程序的客户端ID和启用邮件的安全组以限制应用程序的访问。

3.创建应用程序访问策略。

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,请参见此处

于 2021-03-25T08:20:27.710 回答
0

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

创建启用邮件的组:

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

注册和配置新应用程序:

  1. 登录https://aad.portal.azure.com/
  2. 单击 Azure 活动目录。这应该会将您带到您组织的目录。
  3. 点击应用注册。
  4. 点击新注册。
  5. 为应用程序提供名称。
  6. 选择支持的帐户类型为单租户。
  7. 提供重定向 URI (web) 作为https://login.microsoftonline.com/common/oauth2/nativeclient
    • 这对您的应用程序可能无关紧要,但需要提供重定向 URI。
  8. 点击注册。请复制并存储应用程序(客户端)ID 和目录(租户)ID。
  9. 单击 API 权限,然后单击添加权限。
  10. 选择 Microsoft Graph 并选择权限类型作为应用程序权限。
  11. 从列表中,选择 Mail.Read 权限并单击添加权限。
  12. 在应用程序的已配置权限下,单击为您的组织授予管理员同意。
  13. 单击证书和机密。单击 New client secret 并设置到期时间,最好设置为 Never。
  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
于 2021-04-13T14:08:11.800 回答