MS Graph VS Outlook REST API,OAuth,Win Store/UWP,Xamarin,WebAPI,SSO,Live SDK已弃用 - 混淆

Mem*_*per 5 office365 live-sdk azure-active-directory auth0 microsoft-graph

经过数小时的谷歌搜索,阅读MS文档和代码示例,我现在更加困惑,需要一些架构建议.

基本上我需要弄清楚哪些API适用以及如何从它们开始.

背景

我有一个现有的应用程序(目前是一个XAML + c#win store 8.1应用程序),带有一个WebAPI 2.2 odata(以及一些MVC页面)后端.

客户端应用程序在Win 8.1上运行良好并赢得10台机器服务器端位于天蓝色VM中.

目前

  • 用户使用他们的Microsoft帐户登录应用程序(作为他们登录到Windows的用户)
  • 他们不必键入用户名/密码,他们只接受我用范围指定的权限(1x),例如"wl.basic","wl.emails","wl.calendars"
  • 为此,我使用的是Live Connect库(Microsoft.Live.dll,v5.6.0.0)
  • 然后我从LiveLoginResult获得AuthenticationToken

例如

_loginResult.Session.AuthenticationToken
Run Code Online (Sandbox Code Playgroud)
  • 我将其与odata请求一起传递给服务器.
  • 服务器使用它来查找他们的LiveID/UserID

例如

LiveAuthClient authClient = new LiveAuthClient(clientId, clientSecret, redirectUrl); 
string liveIdGuidAsString = authClient.GetUserId(authenticationToken);
Run Code Online (Sandbox Code Playgroud)
  • 然后我用它来查找我的数据库中的相关用户,并将他们的odata内容提供给客户端应用程序

一切都很好.

我想扩展我的应用程序以与用户的Outlook的日历同步/集成

似乎这些天要做到这一点的合理方法是使用

  • Outlook REST API
  • MS Graph

MS似乎也可能随时关闭我正在使用的Live API

https://msdn.microsoft.com/en-us/library/hh243641.aspx

额外的复杂性

我也(在几个月的时间内)想要将应用程序扩展到

  • 是X平台(可能使用Xamarin传统的PCL代码共享和用于UI的"xamarin传统"平台特定项目,可能使用MVVMCross)
  • 允许用户使用其他服务进行身份验证(所有OAuth 2.0) - 例如google/gmail帐户

这意味着我希望在可能的情况下将其作为"原始OAuth"以实现兼容性,而不是将自己绑定到任何特定的MS API(显然,outlook/outlook.com日历集成只是具有MS帐户的用户可用的功能)

此外,一些现有用户拥有outlook.com帐户(他们用来登录Windows)但在Hosted Exchange 2010中拥有他们的日历数据

似乎要访问此日历数据,这些用户必须将所有Outlook 2016数据移至outlook.com,或将其设置为office 365帐户并将数据迁移到新帐户.

问题

1.我应该在何处/与谁进行身份验证以获取我的授权码和访问令牌 - MS Graph?或Outlook REST API

我已经看到了这个答案(即基本上更喜欢MS Graph)

2.我可以使用"Microsoft帐户"为Windows 8.1和10上的用户保留令人敬畏的"无用户名/密码,只接受权限功能"吗?

当然使用MS Graph,似乎我的Outlook.com/Microsoft帐户用户将无法继续使用没有用户名+密码的Windows用户登录我的应用程序?

文档似乎也建议使用它来使用MS Graph我的用户需要是Office 365/Azure Active Directory,以便尽量减少影响,并在我使用Outlook REST API时保持更广泛的受众

但是,建议的Outlook REST API库似乎是ADAL,似乎依赖于Azure Active Directory?那么我现有的outlook.com用户也无法使用它吗?

3.我需要多长时间才能更换Live SDK并使用其他东西?

基本上我对一系列选项和考虑因素感到困惑,并且可以对任何方向提出任何建议.

Mem*_*per 0

看来Auth0.com可能是这里的最佳选择,因为它应该允许我为各种身份提供商(包括 Microsoft 帐户)相当通用地处理事务,并且它们似乎有用于 Azure AD 的插件/连接类型(企业)。另外,我以前使用过它们(尽管应用程序从未投入生产)并且是一次愉快的体验。

看来我应该能够足够轻松地让用户使用 Auth0 登录,并且他们有各种用于 x 平台的客户端库(包括 xamarin)

Microsoft 帐户(实时)“社交联系”似乎具有访问日历等的范围/权限。

我还没有 100% 确信登录后就能够代表 Azure AD 用户访问 MS Graph API/Outlook REST API

看起来 Azure AD 企业连接类型仅对 Azure AD API 具有一些有限的权限/范围(即列出 azure 域中的用户等)。但是,我尚未添加 Azure AD 连接,因此也许这些连接在全球范围内不可用,但一旦我完成此操作就会弹出?