调用Microsoft Graph

时间:2017-03-22 04:04:31

标签: azure azure-active-directory microsoft-graph office365api

我是Microsoft Graph API和Azure的新手。我想建议我应该使用哪个Microsoft Graph API版本以及我是否应该代表流程使用" Web API"对于我的情景。

我正在构建一个Web服务,可以存储来自不同组织的多个Office 365用户的访问令牌。然后,此Web服务可以通过Microsoft Graph API创建Web挂钩,以获取有关这些用户的日历约会更改的通知。帐户,以便将这些更改同步到我们自己的服务器上存储的相应约会。

因此,它是一个大规模的Office 365日历,在坚果壳中同步Web服务。

我已经完成了很多他们的GitHub示例项目,并设法使用v1图形订阅API创建Web挂钩,并且能够与我的开发帐户的日历进行交互,所有这些都在示例APS.NET MVC项目中进行。< / p>

但我对以下部分感到非常困惑:

  1. 由于此Web服务不直接提供UI,因此登录UI将由单独的桌面(WPF)客户端呈现,我相信当在客户端完成此操作时,我可以将经过身份验证的访问令牌转发到我的Web服务创建Web挂钩?这听起来就像代表流的&#34; Web API&#34;微软在此描述的场景:https://docs.microsoft.com/en-au/azure/active-directory/develop/active-directory-v2-limitations
  2. 由于此Web服务需要为来自不同组织的多个Office 365帐户创建Web挂钩。我不确定这是否算作多租户方案。如果是这种情况,看起来我只能使用v1 API,因为v2 API只允许Web服务从具有相同应用程序ID的应用程序接收令牌(也在上面链接的页面中描述)。
  3. Microsoft Graph和Azure AD开发人员可以为我介绍一下这部分内容吗?在记录这些部分时,微软并没有做得最好。

1 个答案:

答案 0 :(得分:1)

  

由于此Web服务不直接提供UI,因此登录UI将由单独的桌面(WPF)客户端呈现,我相信当在客户端完成此操作时,我可以将经过身份验证的访问令牌转发到我的Web服务创建Web挂钩?这听起来像微软在此描述的“代表流的Web API”场景:https://docs.microsoft.com/en-au/azure/active-directory/develop/active-directory-v2-limitations

是的,该方案是代表流的,目前v2.0端点不支持此流。

  

因为此Web服务需要为来自不同组织的多个Office 365帐户创建Web挂钩。我不确定这是否算作多租户场景。如果是这种情况,看起来我只能使用v1 API,因为v2 API仅允许Web服务从具有相同应用程序ID的应用程序接收令牌(也在上面链接的页面中进行了描述)。

您只能使用Azure AD V1端点,因为V2.0端点不支持代表流。以下是使用V1端点供您参考的一些步骤:

  1. 注册2个应用程序,一个用于WPF(本机应用程序),另一个用于您的Web服务(Web应用程序)
  2. 为网络服务的应用启用多租户
  3. 向Web应用程序授予相对Microsoft Graph权限
  4. 使用原生应用
  5. 的clientId为网络应用设置knownClientApplications
  6. 将相对Microsoft Graph权限和Web应用程序授予本机应用程序
  7. 之后,当用户第一次在不同租户中登录WPF时,用户可以同时同时使用这两个应用。然后,两个应用程序的服务主体将注册到用户的租户。之后,Web服务可以使用代表流来根据本机应用程序中的令牌获取Microsoft Graph的access_token。

    有关多租户开发的更多细节,请参阅以下内容:

    How to sign in any Azure Active Directory (AD) user using the multi-tenant application pattern

    下面的代码示例也很有帮助:

    Calling a downstream web API from a web API using Azure AD