我是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>
但我对以下部分感到非常困惑:
Microsoft Graph和Azure AD开发人员可以为我介绍一下这部分内容吗?在记录这些部分时,微软并没有做得最好。
答案 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端点供您参考的一些步骤:
knownClientApplications
之后,当用户第一次在不同租户中登录WPF时,用户可以同时同时使用这两个应用。然后,两个应用程序的服务主体将注册到用户的租户。之后,Web服务可以使用代表流来根据本机应用程序中的令牌获取Microsoft Graph的access_token。
有关多租户开发的更多细节,请参阅以下内容:
How to sign in any Azure Active Directory (AD) user using the multi-tenant application pattern
下面的代码示例也很有帮助: