具有命名凭据的刷新令牌停止工作

问题描述 投票:0回答:1

我们与第三方系统进行 REST 集成:带有 Open ID 连接的 OAuth 流程。 一年多来,配置都是一样的,但最近我们意识到,当第二次刷新访问令牌时,身份验证不再起作用。

授权。 Provider 具有 Open ID 连接的默认配置:

  • 选中“在标头中发送访问令牌”
  • 选中“在 SOAP API 响应中包含消费者密钥”
  • 未选中“在标头中发送客户端凭据”

授权。提供商截图

(旧版)命名凭据配置为:

  • 身份类型:每个用户
  • 身份验证协议:OAuth 2.0
  • 身份验证提供者:来自上面
  • 范围:refresh_token已满
  • 选中“生成授权标头” 命名凭据屏幕截图

另一端使用WSO2进行用户管理,并设置了服务提供商: 允许的资助类型

  • 代码
  • 隐式
  • 密码
  • 刷新令牌
  • SAML2
  • IWA-NTLM 回调网址:来自 Auth。提供商 选中 **支持 PKCE 'Plain' 变换算法 ** 代币发行者:默认

服务提供商配置截图

现在,在 OAuth 浏览器流程之后,身份验证工作正常。如果访问令牌已过期,但初始刷新令牌未过期,则调出成功。

一旦初始刷新令牌过期,我们就会收到一条未经授权消息。重试未成功。

出于测试目的,我们将到期时间设置如下:

  • 访问令牌需要 60 秒
  • 刷新令牌需要 120 秒 90秒后调出(访问令牌已过期,刷新令牌未):成功;应该收到一个新的刷新令牌 180 秒后调出(访问令牌已过期,初始刷新令牌已过期):未经授权

我更改了 Salesforce 中的配置:

  1. NC范围:refresh_token
  2. 授权。提供商默认范围:完整的刷新令牌和 NC 范围:空白
  3. 授权。提供商默认范围:refresh_token full & NC 范围:空白
  4. 授权。提供商在未选中的标头中发送访问令牌
  5. NC 范围添加了“offline_access”
  6. 身份验证提供者选择“在标头中发送客户端凭据”和“在标头中发送访问令牌”
  7. NC范围:完整refresh_token

根据 Salesforce 帮助使用相同的设置设置新的命名凭据。

所有更改都没有产生任何影响。

我从 Postman 测试了相同的内容,它有效。所以一般来说我们会收到一个有效的刷新令牌。

oauth-2.0 salesforce
1个回答
0
投票

您是否能够解决刷新令牌过期时未授权/令牌过期的问题?如果是,请分享信息以解决,因为我也面临同样的问题。

除非刷新令牌过期,否则调用将会发生并成功(访问令牌会刷新)。一旦刷新令牌过期,就会抛出“令牌过期”错误。

© www.soinside.com 2019 - 2024. All rights reserved.