4

我正在使用 Azure 服务管理 API 和 OAuth API 来生成访问令牌。但是在调用授权类型“refresh_token”时,为了刷新访问令牌,它会返回新的访问令牌,但该响应没有新的刷新令牌。所以我必须使用旧的刷新令牌来刷新访问令牌。问题是 5-6 小时后,刷新令牌返回错误 invalid_client(验证凭据时出错。提供了无效的客户端密码)。在其他情况下,例如通过 Azure AD 进行的 Office 365 应用程序身份验证,它会返回所有内容。

我必须通过 API 调用传递任何特定的参数或标头吗?

下面是我的代码截图

在此处输入图像描述

请帮忙。

提前致谢

4

1 回答 1

0

如果您使用 v2 端点,则动态请求范围,并且必须使用“offline_access”范围请求刷新令牌。这与 v1 模型有很大不同,在 v1 模型中,作用域是通过应用程序注册预先注册的,并且总是返回一个不带显式作用域的刷新令牌。如果您使用的是 v1 并且您没有获得刷新令牌,这可能是由于您的 ADFS 提供者对刷新令牌的安全策略受限,它不会将刷新令牌发送回调用 OAuth 身份验证和授权的 API。

这是安全增强/阻止,以禁用您的应用程序不持有可以永远存在的生命周期刷新令牌(如果刷新)。

因此,如果您可以使用 v2 端点 - 使用 offline_access 范围。否则,请与您的 ADFS 提供商检查安全策略。

我遇到了和你一样的问题,并从这里收集了有助于回答这个问题的大部分信息: https ://stackoverflow.com/a/44813531/4446128 。

于 2017-07-04T00:47:26.057 回答