2017-06-01 58 views
0

我想弄清楚如何使用Azure图形API从给定用户名查询用户的全名(第一个和最后一个)。我明白我可以用下面的图形API调用做到这一点...Azure图形API - 查询用户信息

https://graph.windows.net/myorganization/users/{user_id}?api-version 

但是,我不知道我该怎么去获得一个访问令牌与此使用,因为这个过程将无需用户调用登录,这通常是我们如何获得访问令牌。

是否有无论如何我可以使用cURL或其他方式将用户名/密码传递给给定的URL,并以这种方式获得访问令牌,因此它是在幕后完成的?

回答

3

有其通过的OAuth 2支撑的两个主要的认证方法:

  1. Authorization Code Grant
  2. Client Credentials Grant

第一流需要用户代理存在登录到所述客户服务,并在授权令牌。第二种方法不需要用户登录,因为它只使用客户机密钥进行身份验证;这导致应用程序只有令牌

如果您希望创建一个后台服务来捕获AAD Graph API中的数据,那么您可以使用客户端凭证授权流程完成此操作,该过程不需要用户在身份验证流程中的任何时间出现。

您只需将您的应用程序配置为让应用程序仅适用于范围。阅读here: Permission scopes | Graph API concepts。仅应用程序范围都需要租户管理员同意该应用程序才能访问数据。

最后,我觉得我必须提到在OAuth 2规范中指定了另一个较少使用的流:Resource Owner Password Credentials Grant。此流程指定了知道用户的用户名和密码的客户端应用程序如何直接传递这些参数并代表用户获取访问令牌。但是使用这种流程根本不是好的做法。

资源所有者密码凭证授予类型适合在 情况下资源所有者具有与 客户的信任关系,诸如设备操作系统或高特权 应用。授权服务器在启用此授权类型时应特别注意,并且只有在其他流程不是 可行时才允许授权服务器。

我们在我们的V1端点支持这一点,但不支持我们的新V2端点。你可以阅读this blog to learn more