Office365 MS Graph VS Outlook REST API、OAuth、Win Store/UWP、Xamarin、WebAPI、SSO、Live SDK不推荐使用-混淆

Office365 MS Graph VS Outlook REST API、OAuth、Win Store/UWP、Xamarin、WebAPI、SSO、Live SDK不推荐使用-混淆,office365,azure-active-directory,microsoft-graph-api,live-sdk,auth0,Office365,Azure Active Directory,Microsoft Graph Api,Live Sdk,Auth0,经过数小时的谷歌搜索、阅读微软文档和代码示例,我现在更加困惑,需要一些架构建议 基本上,我需要确定哪些API是适用的,以及如何从它们开始 背景 我有一个现有的应用程序(目前是一个XAML+c#win store 8.1应用程序),带有WebAPI 2.2 odata(以及一些MVC页面)后端 客户端应用程序在Win 8.1和Win 10机器上运行良好 服务器端位于azure VM中 当前 用户登录到应用程序(以其登录的用户身份) 使用其Microsoft帐户的windows(具有) 他们不必打

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

基本上,我需要确定哪些API是适用的,以及如何从它们开始

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

客户端应用程序在Win 8.1和Win 10机器上运行良好 服务器端位于azure VM中

当前

  • 用户登录到应用程序(以其登录的用户身份) 使用其Microsoft帐户的windows(具有)
  • 他们不必打字 用户名/密码,它们只接受我指定的权限(1x) 范围包括“wl.基本”、“wl.电子邮件”、“wl.日历”
  • 为此,我使用Live Connect库 (Microsoft.Live.dll,v5.6.0.0)
  • 然后我从中获得一个AuthenticationToken LiveLoginResult
e、 g

  • 我将其与odata请求一起传递到服务器
  • 服务器使用它来查找他们的LiveID/UserID
e、 g

  • 然后我用它在我的数据库中找到相关用户,并将他们的odata内容提供给客户端应用程序
一切都好。

我想扩展我的应用程序以与用户的Outlook日历同步/集成 现在看来,明智的做法是

  • Outlook REST API
  • MS图形
似乎MS随时都可能关闭我当前使用的Live API

额外的复杂性

我还想(几个月后)将应用程序扩展到

  • be X平台(可能使用Xamarin traditional和PCL代码共享以及UI的“Xamarin traditional”平台特定项目,可能使用MVVMCross)
  • 允许用户使用其他服务进行身份验证(所有OAuth 2.0)-例如google/gmail帐户
这意味着,如果可能的话,我希望将内容设置为“原始OAuth”,以实现兼容性,并且不将自己绑定到任何特定的MS API(显然,outlook/outlook.com日历集成将仅对具有MS帐户的用户可用)

此外,一些现有用户拥有outlook.com帐户(用于登录windows),但其日历数据位于托管的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库似乎是依赖于Azure Active Directory的库?那么,我现有的outlook.com用户是否无法使用此功能

3。我需要多长时间来更换Live SDK并使用它 还有别的吗?

基本上,我对一系列的选择和考虑感到困惑,我可以提供任何关于选择哪个方向的建议

这似乎是一个很好的解决方法,因为它应该允许我为各种身份提供商(包括Microsoft帐户)处理相当一般的事情,他们似乎有一个Azure广告的插件/连接类型(企业)。另外,我以前使用过它们(尽管应用程序从未投入生产),这是一次愉快的体验

看来我应该可以很容易地让用户使用Auth0登录,而且他们有各种各样的客户端库来运行x平台(包括xamarin)

Microsoft帐户(live)“社交连接”似乎具有访问日历等的作用域/权限

我还没有100%确定一旦登录,我将能够代表Azure AD用户访问MS Graph API/Outlook REST API


Azure AD企业连接类型似乎只有Azure AD API的某些v限制权限/范围(即列出Azure域中的用户等)。然而,我还没有为Azure广告添加连接,所以这些可能在全球范围内不可用,但一旦我添加了,它们会弹出吗

这里还有其他选项供您选择。我们还没有完全更新我们的文档,所以请耐心等待。Microsoft Graph支持由新的v2端点颁发的令牌,这支持使用Microsoft帐户或工作/学校AAD帐户登录。登录后,他们将被要求同意允许你的应用访问他们的数据。如果他们使用Microsoft帐户登录,MS Graph将把服务请求路由到他们的outlook.com邮箱,而使用AAD帐户将路由到他们的O365邮箱。您的应用程序和应用程序调用的API(通过MS Graph)工作相同,与用户类型无关。 我们还为MS Graph提供了一个新的.Net客户端库,为auth提供了一个名为MSAL的预览.Net客户端库(ADAL使用仅支持AAD的v1端点,而MSAL支持支持支持MSA和AAD的v2端点)<
_loginResult.Session.AuthenticationToken
LiveAuthClient authClient = new LiveAuthClient(clientId, clientSecret, redirectUrl); 
string liveIdGuidAsString = authClient.GetUserId(authenticationToken);
var startUri = new System.Uri($"https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={Constants.AuthID}&redirect_uri={WebAuthenticationBroker.GetCurrentApplicationCallbackUri().ToString()}&response_type=code&scope={WebUtility.UrlEncode(Constants.Scopes)}");

var webAuthenticationResult = await WebAuthenticationBroker.AuthenticateAsync(Windows.Security.Authentication.Web.WebAuthenticationOptions.None, startUri,
        WebAuthenticationBroker.GetCurrentApplicationCallbackUri());