理解OAuth1密钥(Secret)与签名(Signature):二者是否为同一概念?
OAuth1 中的签名(Signature)和密钥(Secret)完全不属于同一概念,二者是「加密因子」和「加密输出结果」的关系,核心定位和作用完全不同。
1. 密钥(Secret)的定义与特性
- 属于预先分配的静态敏感凭证,全程不会在网络请求中明文传输,仅存在于第三方应用和OAuth服务提供商的后端存储中
- 通常分为两类:
- 消费者密钥(Consumer Secret):OAuth服务提供商给接入的第三方应用的固定专属密钥
- 令牌密钥(Token Secret):用户完成授权后,服务提供商下发的和访问令牌绑定的专属密钥
- 核心作用:作为签名生成过程中的核心加密密钥使用
2. 签名(Signature)的定义与特性
- 属于根据多维度信息动态计算生成的校验值,会放在请求头或请求参数中随接口请求传输
- 生成规则:将请求方法、请求地址、所有请求参数(含OAuth专属的时间戳、随机数等)拼接后,配合前述的密钥,通过OAuth1指定的加密算法(常用的如
HMAC-SHA1)计算得出 - 核心作用:OAuth服务端收到请求后,会用自己存储的对应密钥重新计算签名,和请求携带的签名做比对,即可判断请求是否被篡改、发起方是否为合法授权的第三方应用
3. 二者核心差异
- 性质差异:Secret是静态的固定加密凭证,Signature是动态变化的计算输出结果
- 存储/传输差异:Secret仅本地存储、永不对外传输,Signature随请求公开传输
- 逻辑关系:Secret是生成Signature的必备输入因子之一,没有Secret就无法生成合法的Signature
内容的提问来源于stack exchange,提问作者Chicken Sandwich No Pickles
相关产品推荐
相关产品推荐

