Azure active directory 应该使用哪个OAuth端点从Graph API查询用户信息

Azure active directory 应该使用哪个OAuth端点从Graph API查询用户信息,azure-active-directory,microsoft-graph-api,add-in,office-js,Azure Active Directory,Microsoft Graph Api,Add In,Office Js,我正在写一个单词外接程序。外接程序将是可由组织(Office 365租户)或个人购买的付费外接程序 许可 一旦购买,用户将必须进行身份验证。为确保用户获得使用外接程序的许可证,我将通过 如果是个人购买者:查找与用户的Microsoft帐户关联的id或电子邮件 如果是组织用户:查找租户id和许可证参考号 我不希望Microsoft提供/存储任何许可数据。许可数据(条款和ID)将保存在我自己的数据库中 认证 在SSO退出预览之前,我计划使用Authenticatorfrom来获取已登录到我的加载项的

我正在写一个单词外接程序。外接程序将是可由组织(Office 365租户)或个人购买的付费外接程序

许可 一旦购买,用户将必须进行身份验证。为确保用户获得使用外接程序的许可证,我将通过

  • 如果是个人购买者:查找与用户的Microsoft帐户关联的id或电子邮件
  • 如果是组织用户:查找租户id和许可证参考号
  • 我不希望Microsoft提供/存储任何许可数据。许可数据(条款和ID)将保存在我自己的数据库中

    认证 在SSO退出预览之前,我计划使用
    Authenticator
    from来获取已登录到我的加载项的用户的信息

    在helper文档中,它们列出了以下可能的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 我了解,一旦用户通过身份验证,我将收到一个身份验证令牌,我可以使用该令牌查询Graph API中的用户信息

    问题: 我的问题是,哪种OAuth策略将向Graph API发送一个令牌,该令牌将返回以下信息:

  • 具有Microsoft帐户的个人用户
  • 与租户id关联的组织用户
  • ?

    两者之间有什么区别吗

    Microsoft (Azure AD 2.0 Converged auth) endpoint
    

    Azure AD 1.0 endpoint
    

    是的,有很多不同之处。在高层,这些是:

    v1端点:

    • 仅支持AAD帐户。它不支持MSA/Outlook.com/Live帐户类型
    • 使用“资源”而不是“范围”
    • 需要预先定义注册中所需的权限范围
    • 几乎所有Microsoft REST API都支持(不仅仅是Microsoft Graph)
    v2端点:

    • 支持AAD和MSA帐户
    • 使用“范围”而不是“资源”
    • 权限范围可以在运行时动态请求或预定义(请注意,对于使用客户端凭据的服务/守护程序应用程序,必须预定义它们)
    • 现在有一组较小的API支持(尽管公平地说,大多数API都会随着时间的推移走向图形化)

    注意:这是一个超高级别的详细信息跳过列表,但它涵盖了大多数核心差异。

    因此,如果用户使用AAD或MSA帐户注册,然后登录到v2,我将收到注册用户id(如果是组的一部分,则会收到租户id)?这听起来更适合我的用例,对吗?Graph API支持v2令牌吗?正确。如果要对AAD和MSA用户进行身份验证,则需要使用v2端点。是的,Microsoft Graph同时支持v1和v2访问令牌。