让我使用 Azure OAuth 2 令牌

Getting Me using Azure OAuth 2 Token

我正在尝试使用 Azure OAuth2 对用户进行身份验证,然后获取有关他们的一些信息。这是我现在正在做的。

  1. 如果代码不在 URI 中,将它们重定向到:https://login.microsoftonline.com/GUID_HERE/oauth2/v2.0/authorize
  2. 这会将它们重定向回 URL,但会传递 URI 中的代码
  3. 该页面从 URI 中获取代码并向 POST 请求:https://login.microsoftonline.com/GUID_HERE/oauth2/v2.0/token,其中 body: "grant_type" = "authorization_code" "code" = "INSERT THE CODE" "client_id", "INSERT THE CLIENT_ID" "client_secret", "INSERT THE CLIENT SECRET"
  4. 此 returns 一个有效的访问令牌
  5. 当我尝试通过以下方式请求用户信息时:https://graph.windows.net/me?api-version=1.6 使用授权中的访问令牌 header,我收到一条错误消息,指出令牌已过期。

我尝试了多个不同的端点,但 none 似乎工作正常。任何帮助将不胜感激。

更新 这是一些令牌信息。 aud: "00000003-0000-0000-c000-000000000000" scp: "openid profile email"

您将需要 User.Read 范围,然后调用 https://graph.microsoft.com/v1.0/me 而不是 Azure AD Graph API 端点。 也就是说,您也可以请求 https://graph.windows.net/User.Read 作为范围并调用 AAD Graph,但是 API 已被弃用,所以我宁愿使用当前的 API :)

您拥有的范围 (openid profile email) 只会影响您的应用获得 AFAIK 的 Id 令牌中的内容,不会影响您调用 APIs 的能力。