OAuth2授权码生成规范及编码解码协议选型相关问题咨询
强制标准要求
根据RFC6749 4.1.2节的强制规定,授权码必须符合以下规则:
- 为必填参数,由授权服务器自主生成
- 必须设置短期有效期降低泄露风险,官方推荐最大有效期为10分钟
- 同一授权码不得被重复使用:如果检测到授权码被多次用于兑换令牌,必须直接拒绝请求,可行的情况下需要撤销所有此前用该授权码下发的令牌
- 授权码必须和对应的客户端标识符、重定向URI绑定,兑换令牌时需要校验三者完全匹配才能通过校验
编码规则相关说明
RFC6749标准没有对授权码的编码、解码协议做强制要求,这部分规则完全可以由服务提供方自行决定,只要满足上述的强制规则即可。
行业内常见的实践方案参考:
- 优先选择URL安全的编码格式,比如URL-Safe Base64、十六进制编码,避免授权码在通过URL传输时出现转义异常
- 生成逻辑可二选一:
- 随机字符串方案:生成高熵随机串作为授权码,服务端存储该串对应的上下文信息(用户标识、授权范围、客户端ID、重定向URI、过期时间等),兑换时查询存储做校验,优点是实现简单,缺点是需要额外存储资源
- 自包含编码方案:将所有上下文信息加密后编码为授权码,服务端无需额外存储,兑换时直接解密校验内容合法性、有效期即可,优点是无存储依赖,缺点是需要做好加密防护,避免授权码被篡改、解密
- 禁止将敏感信息明文编码进授权码,所有非公开信息必须经过加密处理后才能写入授权码内容
内容的提问来源于stack exchange,提问作者John Winston
相关产品推荐
相关产品推荐

