asp.net-mvc - 服务应用程序的 Microsoft Graph API 身份验证

标签 asp.net-mvc azure office365 microsoft-graph-api azure-ad-graph-api

我们正在使用 Microsoft Graph 开发一个 Web 应用程序,登录用户可以将所有日历事件导出到第三方日历应用程序。初始导出后,我们需要通过服务应用程序(在服务器上运行的计划任务)使导出的数据与日历更改保持同步。这需要是一个 Multi-Tenancy 应用程序,因为来自不同组织的人员应该能够使用此服务。

现在,我们使用 OAuth 2.0 和 OpenID Connect 进行身份验证,如 this sample 中所述。 。后来我们了解到,如果没有用户交互,我们使用此方法获得的访问 token 无法在服务应用程序中使用。考虑到我们的场景,实现这一目标的最佳方法是什么?

我读过App-only authorization method去做这个。如果我们使用此身份验证方法,该应用程序需要得到租户管理员的同意,并且这些应用程序在可以访问 Office 365 组织中的数据方面非常强大。考虑到我们正在开发一个由不同组织使用的产品,使用这种方法是否可行?

最佳答案

要使用客户端凭据 OAuth2.0 流程(又名“仅应用程序”或服务帐户访问权限,具体取决于您正在阅读的文档),每个租户的管理员需要指定您的守护进程进程可以为用户提供哪些范围在他们的租约中。最终用户无法将这些范围权限授予您的代码本身(至少据我所知)。

需要注意的一件事是,如果您使用客户端凭据流程,当前 Graph API 不允许您修改附加到 Office 365 组的日历。这对我们来说很痛苦,所以我们raised it as an issue that needs fixing in the Office 365 feedback system.如果这对您或其他任何人来说是个问题,请投几票,以便它得到 Microsoft 的更多关注。 :-)

关于asp.net-mvc - 服务应用程序的 Microsoft Graph API 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35037411/

相关文章:

javascript - 使用 T4MVC JavaScriptReplaceableUrl

angular - Azure Web App HTTP 错误 414 - URL 请求太长

azure - 将设备位置发送到 Azure Windows Phone 8.1

javascript - 更改内容控件中表格的值

rest - 使用 Office 365 REST API OAuth access_token 时出现 SharePoint 错误

asp.net-mvc - 使用 Unity 的 MVC5 应用程序中的 ASP.Net Identity 2.1

asp.net - 在 Web 窗体应用程序中包含 MVC 3 View

c# - 将多个对象发布到 Web API

azure - 在哪里可以从 Azure 门户找到服务主体 GUID

azure - 是否可以使用 LDAP 从 Office365 - Exchange Online/Azure 检索数据?