【问题标题】:Azure AD OAuth token refresh gives error AADSTS50000Azure AD OAuth 令牌刷新给出错误 AADSTS50000
【发布时间】:2018-06-15 18:10:45
【问题描述】:

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

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 和客户端密码与获取刷新令牌时使用的相同。然而,有些东西显然是缺失或不正确的——但是什么?

【问题讨论】:

    标签: oauth-2.0 azure-active-directory refresh-token


    【解决方案1】:

    您缺少必需的scope 参数as described here。

    您还需要提供redirect_uri,尽管您只是发出 POST 请求。

    并且redirect_uri 必须与原始授权调用中使用的redirect_uri 匹配。

    刷新访问令牌时,您必须提供要获取令牌的范围。还要确保您了解您只能刷新 access_token,而不是 id_token。并且 access_token 总是有一个目的(范围)。

    文档中描述的所有内容。

    【讨论】:

    • 谢谢!除了要求redirect_uri 与使用的原始令牌匹配之外,它还要求完全匹配范围。有了它,它就起作用了:)
    • 是的,也描述了 - 相同或原始范围的子集。我很高兴它现在可以工作了;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2018-01-08
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    相关资源
    最近更新 更多