【问题标题】:Get Azure AD Basic User Profile获取 Azure AD 基本用户配置文件
【发布时间】:2018-09-02 19:27:23
【问题描述】:

我正在尝试从 Azure AD 获取用户的基本配置文件。我有一个针对 Native Azure AD App 注册 的 React Native 应用程序进行身份验证。我从该请求中获得的access_token 用于针对Web 应用程序/Api 进行身份验证。使用我在 Azure AD 中设置的权限向用户显示正确的同意屏幕。

  1. Microsoft 图形 API
    • 阅读所有用户的基本资料
    • 登录并阅读用户资料
  2. Windows Azure 活动目录
    • 阅读所有用户的基本资料
    • 登录并阅读用户资料

(添加了 Graph API 和 AAD,因为我不知道该使用哪一个)

当我尝试通过 https://graph.microsoft.com/v1.0/users/me 获取用户个人资料时,我从上一个请求中获得了 access_token

{
    "error": {
        "code": "InvalidAuthenticationToken",
        "message": "Access token validation failure.",
        "innerError": {
            "request-id": "00cdb708-bcf8-4b33-af21-14a046b16533",
            "date": "2018-09-02T18:28:59"
        }
    }
}

我初始身份验证请求中的resourceWeb 应用程序/API 的 应用程序ID,我不认为拥有2 个资源是一种选择(?)。

我做错了什么,我应该怎么做才能解决它?谢谢。

【问题讨论】:

    标签: azure oauth azure-active-directory azure-web-app-service microsoft-graph-api


    【解决方案1】:

    根据您的描述,我假设您想获取用户个人资料,但得到的错误显示令牌无效。

    根据我的测试,您发布的请求 URL 不正确。

    应该是 'https://graph.microsoft.com/v1.0/me' 或 'https://graph.microsoft.com/v1.0/users/{id |用户主体名称}'。

    我们可以通过以下方式解决您的问题。

    首先,检查请求,如果它有正确的“授权”字段。 This document 表明我们需要请求头中的授权字段。

    其次,如果您在请求头中添加了授权字段,您能否提供我们可以识别问题是否来自那里的主要代码?

    【讨论】:

    • access_token 请求。这适用于获取可在 API 中使用的令牌:'https://login.microsoftonline.com/common/oauth2/authorize?client_id=' +AAD_NATIVE_ID+ '&response_type=token&reply_url=' +AAD_API_REPLY_URL+ '&response_mode=fragment&state=12345&scope=openid&nonce=678910&resource=' + AAD_API_ID.。这就是我要求获取个人资料let fetchString = "https://graph.microsoft.com/v1.0/users/me" request.open('GET', fetchString); request.setRequestHeader('Authorization', 'Bearer ' + access_token) request.send();
    • 正如您发布的那样,您的范围是 openid。当我们获取到用户时,根据【本文档】(developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/…)的范围需要User.Read。
    • 将端点更改为https://login.microsoftonline.com/common/oauth2/authorize?client_id=' +AAD_NATIVE_ID+ '&response_type=token&reply_url=' +AAD_API_REPLY_URL+ '&response_mode=fragment&state=12345&scope=openid+User.Read&prompt=admin_consent&nonce=678910&resource=' + AAD_API_ID 时得到相同的Access token validation failure
    • 网址应该是这样的:fetchString = "https://graph.microsoft.com/v1.0/me"
    • 我刚刚将fetchString 更改为您所要求的,但仍然收到错误:InvalidAuthenticationToken
    【解决方案2】:

    在获取访问令牌时添加 "resource" : "https://graph.microsoft.com/" 并在带有 Bearer 的标头中使用该访问令牌,而不是点击 url ---> @ 987654322@

    获取访问令牌时不要忘记添加资源

    稍后谢谢我:P

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 2018-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      相关资源
      最近更新 更多