知识卡片

识别认证授权三段论

专业/工作 · 526

内容

访问控制要分三步走,顺序不能乱:识别是用户主张一个身份(现实里报出自己的名字,数字世界里填用户名或邮箱);认证是用密码、证书、令牌之类的凭据去验证这个身份主张是不是真的(用多种凭据组合验证就是多因子认证);授权永远发生在认证之后,检查这个已经验证过身份的用户在当前场景下具体能做什么。这三个词日常经常被混着用,但把它们拆开看能避免很多设计上的糊涂账——”用户登录了”只解决了识别和认证,”用户能不能删除这本书”是完全独立的第三个问题,即便认证用的是最强的多因子方案,也不能替代授权检查。发散:这个顺序性还解释了为什么权限系统的 bug 经常出在”认证成功就默认有权限”这种想当然的捷径上——严谨的访问控制永远要求这两步职责分离,认证模块回答”你是谁”,授权模块回答”你能干什么”,两者绝不能合并成一步。

参考来源

《Cloud Native Spring in Action》第11章《Security: Authentication and SPA》