代码之家  ›  专栏  ›  技术社区  ›  Tomas Aschan

azure ad oauth令牌刷新提供错误aadsts50000

  •  0
  • Tomas Aschan  · 技术社区  · 6 年前

    成功验证后,我想刷新我的授权令牌,因此我发出以下请求

    curl -X POST \
      https://login.microsoftonline.com/<my-tenant>/oauth2/v2.0/token \
      -H 'Cache-Control: no-cache' \
      -H 'Content-Type: application/x-www-form-urlencoded' \
      -F grant_type=refresh_token \
      -F refresh_token=<my-refresh-token> \
      -F client_id=<my-client-id> \
      -F client_secret=<my-client-secret>
    

    但是,我没有返回新的令牌,而是得到以下响应:

    {
        "error": "server_error",
        "error_description": "AADSTS50000: There was an error issuing a token.\r\nTrace ID: bb72ee21-7df2-4949-8375-e6d97b621300\r\nCorrelation ID: 719ea759-622b-4d63-be17-56fd6c255195\r\nTimestamp: 2018-06-15 09:07:13Z",
        "error_codes": [
            50000
        ],
        "timestamp": "2018-06-15 09:07:13Z",
        "trace_id": "bb72ee21-7df2-4949-8375-e6d97b621300",
        "correlation_id": "719ea759-622b-4d63-be17-56fd6c255195"
    }
    

    租户、客户端ID和客户端机密都与获取刷新令牌时使用的相同。然而,有些东西显然是丢失或不正确的-但是什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   astaykov    6 年前

    你没有强制性的 scope 参数 as described here

    你还需要提供 redirect_uri ,尽管您只是提出了一个post请求。

    以及 重定向 必须匹配 重定向 在原始授权调用中使用。

    刷新访问令牌时,必须提供要获取该令牌的作用域。还要确保您理解只能刷新访问令牌,而不能刷新id令牌。访问令牌总是有目的(作用域)。

    文档中描述的所有内容。