You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DocuSign隐式授权返回参数以#分隔而非?的获取与原因疑问

关于DocuSign隐式授权模式锚点参数的处理方案及原因分析

一、为什么DocuSign用#而非?传递参数

这是OAuth 2.0隐式授权模式的标准规定,并非DocuSign的自定义行为:

  • 隐式模式的设计目标是让前端直接获取access_token,用#(锚点)传递参数时,浏览器不会将这部分内容发送给服务器,能避免token被服务器日志记录,降低泄露风险
  • 而?后的查询参数会被服务器接收并可能存储,不符合隐式模式“前端直接获取token,不经过服务器中转”的安全设计初衷

二、前端获取锚点参数的常用方法

1. 原生JavaScript处理

直接读取浏览器的锚点内容并解析:

// 去除锚点开头的#,获取参数部分
const hashContent = window.location.hash.slice(1);
// 分割成键值对数组
const paramArray = hashContent.split('&');
// 转换为可直接使用的对象
const authParams = {};
paramArray.forEach(item => {
  const [key, value] = item.split('=');
  authParams[key] = decodeURIComponent(value);
});
// 后续可直接调用authParams.access_token、authParams.expires_in等参数

2. 框架工具适配(以React/Vue为例)

  • React:借助react-router的useLocation钩子获取location.hash,再按上述逻辑解析
  • Vue:通过$route.hash获取锚点内容,再进行分割解析

3. 注意事项

  • 解析时必须用decodeURIComponent处理参数中的特殊字符
  • 如果使用前端路由框架,需确保路由规则不会过滤掉锚点参数

三、需服务器获取参数的替代方案

如果业务逻辑要求服务器拿到token,不建议使用隐式模式,换成授权码模式:

  • 授权码模式先返回code(以?传递的查询参数),再由服务器用code向DocuSign换取token,既符合服务器端获取token的场景,安全性也更高

内容的提问来源于stack exchange,提问作者Diana Simonson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 01:43:14