Azure 向托管标识授予O365邮箱权限
正在尝试获取逻辑应用程序以通过Graph API获取电子邮件详细信息,因为O365 Outlook Connector不提供我需要的输出,但Graph API提供(Internet邮件标题) Outlook connector为身份验证创建了一个API连接,效果非常好 为了调用Graph API,我正在使用HTTP操作,它支持托管标识,所以我想知道:Azure 向托管标识授予O365邮箱权限,azure,azure-active-directory,microsoft-graph-api,azure-logic-apps,Azure,Azure Active Directory,Microsoft Graph Api,Azure Logic Apps,正在尝试获取逻辑应用程序以通过Graph API获取电子邮件详细信息,因为O365 Outlook Connector不提供我需要的输出,但Graph API提供(Internet邮件标题) Outlook connector为身份验证创建了一个API连接,效果非常好 为了调用Graph API,我正在使用HTTP操作,它支持托管标识,所以我想知道: 我是否可以授予权限,以便托管标识可以读取特定邮箱 HTTP操作是否可以使用API连接(类似于Outlook连接器的功能) 1.我是否可以授予权限,
Azure Active Directory
->企业应用程序中检查它及其权限。但我们无法在其中添加新权限,因此我们需要在应用程序注册中,
,然后授予Microsoft Graph API的Mail.Read
应用程序权限,请参阅此。权限是调用此api(我想您想使用此api,如果不想,只需按照文档查找应用程序权限,然后添加即可。)最后,不要忘记单击授予管理员许可
按钮
在逻辑应用程序中,使用Active Directory OAuth进行身份验证https://graph.microsoft.com/
对于受众
,以及特定的URL
、客户端id
、机密
等,需要调用MS graph api的内容<代码>xxx@microsoft.com
是用户主体名称,也是邮箱地址。我不确定我是否足够正确地理解了你问题中的阅读某个邮箱
,如果你的意思是你只想授予一个邮箱的权限,我会说Microsft graph中没有这样的权限
2.HTTP操作能否使用API连接(类似于Outlook connector的功能)
没有用于http操作的预构建连接器,您可以尝试。有一种方法可以将该应用程序角色权限添加到托管标识。使用Azure门户不可能做到这一点。您可以在Azure门户中验证以下步骤是否有效。此方法可以节省您自己创建主体的时间,并且不需要客户端id/秘密簿记 使用Powershell时,可以将Mail.Read应用程序角色权限添加到托管标识(无论是系统托管标识还是用户托管标识)。还有其他执行相同步骤的方法,例如Azure CLI。但以下是我所知道的有用的东西 这些步骤可用于具有可分配应用程序角色的任何身份和应用程序。因此,您还可以向列表网站添加Sharepoint权限,打开Excel工作表。但请记住,微软应用程序的角色大多是全有或全无。它打破了权限最少的原则。
我想知道一种避免违反原则的通用方法。 要将应用程序角色权限分配给托管标识,我们需要了解以下几点: 身份证
$managed\u identity\u name=“逻辑应用程序标识”
$application\u,具有\u所需的\u角色\u name=“Microsoft Graph”
$application\u role\u to\u assign\u name=“Mail.Read”
使用AzureAD模块并登录。
从中使用AzureAd模块
导入模块AzureAd
Connect AzureAd#显示弹出窗口以登录
1.获取托管标识id
#首先筛选服务器端,如果有多个结果,where将确保一个结果
#-所有这些都是必需的,因为托管标识是一种服务主体
$managed_identity_id=(Get AzureADServicePrincipal-All$true-SearchString$managed_identity_name |其中DisplayName-eq$managed_identity_name)。ObjectId
2.获取具有请求的应用程序角色的应用程序
“Microsoft Graph”上的SearchString返回两个结果,因此使用where子句确保单个结果
#存储返回的对象,因为它包含approles数组
$application_与_required_角色=(Get AzureADServicePrincipal-SearchString“Microsoft Graph”|其中DisplayName-eq“Microsoft Graph”)
#有趣的事实:“MicrosoftGraph”应用程序的ObjectId始终是:94d0e336-e38a-4bfc-9b21-8fbb74b6b835
$application\u with theu required\u role\u id=$application\u with theu required\u role.ObjectId
3.获取要分配给托管标识的应用程序角色id
#所需的id现在被简单地称为id
#有趣的事实:“Mail.Read”应用程序角色的ObjectId始终是:810c84a8-4a9e-49e6-bf7d-12d183f40d01
$application_role_to_assign_id=($application_with_required_role.approvles | where Value-eq$application_role_to_assign_name).id
将应用程序角色分配给托管标识
New AzureADServiceAppRoleAssignment-ObjectId$managed\u identity\u id-PrincipalId$managed\u identity\u id-ResourceId$application\u与所需的\u角色\u id-id$application\u角色\u分配\u id
奖励:验证任务
#应该列出分配给标识的应用程序,进一步挖掘特定的应用程序角色
#(我不知道怎么做:S)
获取AzureADServiceAppRoleAssignedTo-ObjectId$managed_identity_id|fl
#另一种方法是列出分配给应用程序的标识
获取AzureADServiceAppRoleAssignment-ObjectId$application,其中包含所需角色id
谢谢Joy,这非常有帮助。关于“如果您的意思是只授予一个邮箱的权限,我将