使用Azure功能处理来自Azure逻辑应用程序的会议请求

时间:2019-01-01 15:24:34

标签: microsoft-graph azure-functions azure-logic-apps

度过了Hours of Research之后,我无非是一头雾水。围绕天蓝色的功能和天蓝色的逻辑应用以及天蓝色的广告周围的图形和身份验证内容,正在进行着如此多的变更,因此,很难找到合适的资源。

我要实现的目标很简单:

  1. 一种天蓝色的逻辑应用程序,当收到到共享收件箱的新电子邮件时触发。
  2. 如果这些电子邮件是会议请求,并且标记为私人电子邮件或以“免费”状态发送,则会议请求将自动被拒绝。
  3. 一条消息发布到一个闲置频道。

期望步骤2一切正常。不幸的是,没有默认连接器提供任何操作来阅读有关会议请求的更多详细信息,并且没有连接器操作可以拒绝会议请求。因此,显而易见的方法是使用azure函数,然后使用Microsoft Graph API进行处理。

所以我总是失败的地方是: 如何在azure函数中获取正确的Auth令牌以访问Microsoft图形?

由于逻辑应用程序是非交互式执行的,所以我无法进行任何交互式登录,也不想对代码中的任何凭证进行硬编码。

1 个答案:

答案 0 :(得分:2)

1。在功能应用中打开MSI

在功能应用程序中,导航至Platform features,选择Identity,然后将Status切换为On。点击Save

enter image description here

2。托管服务身份的权限和角色

授予服务主体权限,以从我的Azure AD获取一些目录数据,例如用户信息。以下Azure AD命令将我的服务主体添加到AD Directory角色Directory Readers中: enter image description here

3。获取令牌

在Azure功能中启用MSI后,可以转到https://***.scm.azurewebsites.net并单击“环境”并获取MSI_SECRET

public static async Task<HttpResponseMessage> GetToken(string resource, string apiversion)  {
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("Secret", Environment.GetEnvironmentVariable("MSI_SECRET"));
    return await client.GetAsync(String.Format("{0}/?resource={1}&api-version={2}", Environment.GetEnvironmentVariable("MSI_ENDPOINT"), resource, apiversion));
}

有关更多详细信息,您可以参考此article和此one