请求访问资源https://graph.windows.net/时出错AADSTS50020

时间:2014-10-01 05:54:56

标签: php azure oauth office365 azure-active-directory

Continuation of this question I had asked。我正在尝试在我的PHP Web应用程序上实现“使用您的O365帐户登录”功能。

当我的应用请求访问Graph API资源(https://graph.windows.net/)时,似乎只有管理员才能允许访问。如果非管理员尝试完成OAuth工作流程,则会从login.windows.net获取此错误:

AADSTS50020: This operation can only be performed by an administrator. Sign out and sign in as an administrator or contact one of your organization's administrators.

我并不是真的想要访问目录中所有用户的详细信息(我可以理解这类需要管理员权限的东西),但只是当前登录用户的名称/电子邮件(admin或非-admin)。

因此我基本上需要任何O365用户才能允许我的应用读取他们的基本个人资料信息。 Graph API是正确的方法吗?为实现这一目标,我需要做些什么?

1 个答案:

答案 0 :(得分:0)

如果你添加' scope = openid'对于您的OAuth令牌请求,来自AAD的响应应包含“id_token”'键。该密钥的值是 unsigned JWT令牌,如果用户在目录中可用,您将在其中找到有关用户的以下属性:

  • oid =目录ObjectId。
  • tid =用户所属的租户ID GUID。
  • iss =发行人
  • UPN
  • 电子邮件
  • 受试者
  • GIVEN_NAME
  • FAMILY_NAME

注意:返回的id_token以及基本的OAuth令牌响应是无符号令牌。不应将其与OpenID Connect协议响应中返回的已签名id_token混淆。 绝对不用于做出身份验证决定。这纯粹是信息性的。