当前位置: 首页 > news >正文

颠覆认知!为什么“发 Token”其实是「授权」而不是「认证」?

🤯 颠覆认知!为什么“发 Token”其实是「授权」而不是「认证」?

👋嗨,开发者们!

在做登录功能时,我们经常听到这两个词:Authentication(认证)Authorization(授权)

很多人(包括曾经的我)都潜意识地认为:“登录就是认证,Token 是登录成功的产物,所以发 Token 也是认证的一部分。”

🛑打住!这个理解其实是不准确的。

今天我们来聊聊一个架构设计中的冷知识:为什么颁发 Token(令牌)这个动作,在本质上属于「授权」?🚀


🕵️‍♂️ 一、 认证 vs 授权:傻傻分不清楚?

首先,我们用一个“去公司大楼上班”的例子来彻底厘清这两个概念:

1️⃣ 认证 (Authentication) = 验明正身 🆔

  • 场景:你走到大门口,保安大叔拦住你:“你谁啊?”
  • 动作:你掏出身份证,或者刷脸。保安核对照片和本人,确认你是“张三”。
  • 核心问题你是谁?(Who are you?)
  • 代码对应checkPassword(username, password)

2️⃣ 授权 (Authorization) = 赋予权力 💳

  • 场景:保安确认你是张三后,但他不能让你直接进去。他拿出一张门禁卡,在读写器上刷了一下(写入权限:可进 1-5 层),然后把卡递给你
  • 动作:发放门禁卡。
  • 核心问题你能干什么?(What can you do?)
  • 代码对应JwtUtil.createToken(userId, role)

💡看出来了吗?
核对身份证是“认证”,但把门禁卡(Token)递给你的那一刻,其实是在进行“授权”。因为那张卡代表了你在大楼里的权力


🛠 二、 铁证如山:看看标准协议怎么说

如果你还觉得那是咬文嚼字,我们来看看国际标准协议OAuth 2.0是怎么定义的。

在 OAuth 2.0 中,负责生成和发放 Token 的那个服务,官方名称叫:

👉Authorization Server(授权服务器)

它不叫Authentication Server,也不叫Login Server

为什么?
因为 Token(特别是 JWT)的本质就是一份“授权书”
当你把 Token 发给客户端时,你的潜台词是:

📢“我授权持有这个 Token 的人,代表用户 ID: 10086,在未来 2 小时内,访问我的资源服务器。”


💻 三、 代码视角的“解剖”

在我们的 Java / Go / Node.js 代码中,一个所谓的login接口,其实通常原子化地执行了两个步骤

publicStringlogin(Stringusername,Stringpassword){// 🔥 步骤 1:认证 (Authentication)// 这一步只负责判断真假,不产生 TokenUseruser=userRepo.findByName(username);if(!passwordEncoder.matches(password,user.getPassword())){thrownewAuthenticationException("密码错误!");}// ✨ 步骤 2:授权 (Authorization)// 这一步负责打包权限,生成令牌// 这里的动作是:系统授予了用户访问 API 的凭证Stringtoken=JwtUtil.createToken(user.getId(),user.getRole());returntoken;}
  • 步骤 1结束时,系统只是知道了“你是张三”。
  • 步骤 2结束时,系统才赋予了张三“通行权”。

🧠 四、 为什么区分这个很重要?

你可能会问:“反正都是写在一个接口里,分那么细有啥用?” 🤔

微服务中台架构中,这个区别至关重要:

  1. 架构解耦🧩
    • 统一认证中心 (IAM)可能只负责验密码(认证)。
    • 业务系统可能需要根据认证结果,自己发放特定业务的 Token(授权)。
  2. 理解 OIDC🌐
    • OIDC (OpenID Connect)协议之所以存在,就是因为 OAuth 2.0 只管授权(发 Token),不管身份。OIDC 补上了 ID Token,才把“认证”和“授权”完美结合起来。
  3. 安全模型🛡️
    • 理解了 Token 是授权,你就明白了为什么Token 泄露 = 权限被盗。因为捡到门禁卡的人,拥有和你一样的权力!

📝 总结

下次面试或者做架构设计时,请记住这个公式:

  • 验证账号密码➡️认证 (Authentication)👮
  • 颁发 Token➡️授权 (Authorization)🔑
  • 校验 Token➡️鉴权 (Access Control)🚧

发 Token 就是在发权力,所以它绝对是授权!


觉得有道理吗?欢迎点赞、评论交流!👇
#编程知识 #架构设计 #OAuth2 #JWT #认证与授权

http://www.jsqmd.com/news/317621/

相关文章:

  • 2026 版激光设备行业工程师核心技能树全解析
  • 激光技术工程师:国内与海外职业发展路径大揭秘
  • 解锁激光专利秘籍:从撰写到布局的破局之道
  • 2026氧化锆陶瓷供应商推荐,性价比高的都有谁
  • 数据库创建更新时间
  • 当公众号排版不再成为负担:运营人的AI排版新选择丨微信编辑器推荐
  • 网络安全到底是什么?一篇概念详解(附学习资料)
  • Python - 基础数据类型
  • 聊聊好喝不贵的长牛健植物基能量饮料多少钱
  • 炉膛火焰集成式监控系统费用参考与靠谱公司推荐
  • 2026年英国留学中介专业排名分析,如何选择合适机构?
  • 网络安全是什么?包括哪些方面?怎么快速入行?
  • 合肥留学机构排名揭示,申请成功率高的机构名单
  • 收藏!2025秋招真相:IT仍是王者,AI算法岗年薪40万领跑全场
  • 必收藏!行业大模型核心解析(小白程序员入门必备)
  • 济南硕士留学机构十强排名,资质正规机构全面评测指南
  • AI智能生成微信红包封面工具 | 一键制作个性化红包封面系统源码
  • 揭秘合肥硕士留学中介排名,收费透明选择指南
  • 数据库id生成方案
  • 郑州留学中介口碑排名揭晓,录取率高机构全面解析
  • 使用Markdown【从入门到精通一篇就够了】
  • 基于MATLAB的三相异步电动机交流调压调速系统设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 三相PWM整流器仿真,前馈解耦控制,基于dq模型SVPWM控制(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • Varian L6431 Rev G TC/Pirani 板,L6430-001
  • 2026年 拖链替代方案厂家推荐榜单:WBK31/WBK41/VBK21/VBK31/VBK41/WBK51及易格斯/米思米/怡合达拖链专业平替品牌深度解析
  • 三相异步电机调压调速系统matlab, simuink仿真(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 洛谷 P3750 [六省联考 2017] 分手是祝愿
  • axure 引用 echarts图表
  • 三相交流异步电动机调速SVPWM矢量控创仿真(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 氦氖激光器品牌质量稳定性评测:哪个品牌故障率更低?