应使用哪个 OAuth 端点从图形中查询用户信息 API

What OAuth endpoint should be used to query user information from the Graph API

我正在编写 Word 加载项。该加载项将是一个付费加载项,可以由组织(Office 365 租户)或个人购买。

许可

购买后,用户必须进行身份验证。为确保用户获得使用插件的许可,我将通过

进行验证
  1. 如果是个人购买者:查找与用户的 Microsoft 帐户关联的 ID 或电子邮件
  2. 如果是组织用户:查找租户 ID 和许可证参考号

我不希望 Microsoft provide/store 任何许可数据。许可数据(条款和 ID)将保存在我自己的数据库中。

身份验证

在 SSO 结束预览之前,我计划使用 office-js-helpers 中的 Authenticator 来获取已登录我的加载项的用户的信息。

在帮助文档中,他们列出了以下可能的 OAuth 策略:

var authenticator = new OfficeHelpers.Authenticator();

// register Microsoft (Azure AD 2.0 Converged auth) endpoint using
authenticator.endpoints.registerMicrosoftAuth('client id here');

// register Azure AD 1.0 endpoint using
authenticator.endpoints.registerAzureADAuth('client id here', 'tenant here');

// register Google endpoint using
authenticator.endpoints.registerGoogleAuth('client id here');

// register Facebook endpoint using
authenticator.endpoints.registerFacebookAuth('client id here');

// register any 3rd-Party OAuth Implicit Provider using
authenticator.endpoints.add('Name of provider', { /* Endpoint Configuration */ })

图表API

我知道一旦用户通过身份验证,我将收到一个身份验证令牌,我可以使用它来查询图表 API 以获取用户信息。

问题

我的问题是哪个 OAuth 策略将使用令牌响应图表 API,该图表将 return 信息用于:

  1. 拥有 Microsoft 帐户的个人用户
  2. 与租户 ID 关联的组织用户

?

有区别吗
Microsoft (Azure AD 2.0 Converged auth) endpoint

Azure AD 1.0 endpoint

是的,有不少不同。在高层次上,这些是:

v1 端点:

  • 仅支持 AAD 帐户。它不支持 MSA/Outlook.com/Live 帐户类型。
  • 使用 "Resources" 而不是 "Scopes"
  • 需要在注册时预定义你想要的权限范围
  • 几乎所有 Microsoft REST API(不仅仅是 Microsoft Graph)都支持

v2 端点:

  • 同时支持 AAD 和 MSA 帐户
  • 使用 "Scopes" 而不是 "Resources"
  • 可以在运行时动态请求权限范围 预定义(请注意,对于使用客户端凭据的 service/daemon 应用程序,您必须预定义它们)。
  • 今天由一小部分 API 支持(尽管公平地说,随着时间的推移,大多数 API 都将转向 Graph)。

注意:这是一个超高级的跳过很多细节的列表,但它涵盖了大部分核心差异。