news 2026/5/1 9:51:33

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
颠覆认知!为什么“发 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 #认证与授权

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:38:29

从0搭建一个本地CTF靶场

从0搭建一个本地CTF靶场 我们平时大部分练习的CTF靶场都是别人的平台的,所以想着自己搭一个来玩玩,用的是CTFd框架,因为网上的教程也比较多,这次搭建也是比较顺利的,记录一下。 前期准备: centos7.x系统…

作者头像 李华
网站建设 2026/4/29 8:37:44

从讲义到学院:钱学森1963年的“星际蓝图”与2026年的现实回响

历史的坐标:1961年的讲台与2026年的揭牌1961年秋,中国科学技术大学近代力学系的教室里,钱学森先生拿起了粉笔。在接下来的几个月里,他将自己在美国加州理工学院和麻省理工学院积累的深厚学识,以及对未来航天工程的系统…

作者头像 李华
网站建设 2026/4/25 7:15:28

亲测好用专科生必看8款AI论文平台

亲测好用专科生必看8款AI论文平台 专科生论文写作的“好帮手”测评 随着AI技术在教育领域的不断渗透,越来越多的专科生开始借助AI工具提升论文写作效率。然而,面对市场上五花八门的AI论文平台,如何选择真正适合自己需求的产品成为一大难题。为…

作者头像 李华
网站建设 2026/5/1 7:18:39

基于Spring Boot+Vue的图书馆在线占座系统

🍅 作者主页:Selina .a 🍅 简介:Java领域优质创作者🏆、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。 主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据…

作者头像 李华
网站建设 2026/4/23 19:09:24

聊聊Spring里那个不打扰Controller就能统一改响应的“神器”

01 引言 在程序编码的时候,我们总会统一返回响应参数,以规范开发。但是面对老项目改造的时候,有没有遇到过返回的参数不统一的情况,自己又不原因一个个的纠正。那么这篇文章将从不同的角度给你带来思路。 02 ResponseBodyAdvice…

作者头像 李华