认证 (Authentication) 和授权 (Authorization) 的区别

Feb 10, 2018 oauth,jwt

在计算机领域 Auth 常常对应两个单词,Authentication(认证) 和 Authorization(授权)。两者对应相同的缩写,在很多情况下容易混淆,所以先从英语单词的角度做一些分析。

Authentication 是 authentic 的名词形式,-ation 后缀同 action,表示动作或者过程。authentic 是个形容词,意思是“真实的,可靠的”,来源于古希腊语 authentikos。这个单词偶尔会被拼写成另外一个形式:Authentification,是因为这个单词在很多欧洲语言里都带有这个 -fi-,但是标准英语是没有的。Authentication 通常翻译为“认证”或者“验证”。

Authorization 是 authorize 的名词形式,这里 -ation 和上面一致表示动作或者过程。authorize 是个动词,意思是“授权,批准”,来源于拉丁语 auctor,意思是“创始人,主人”;在英语里对应的词是 author,除了本意“作者”外也有“创始人,发起人”的意思。Authorization 通常翻译为“授权”。

另外还有一个词 —— Identification,是 identify 的名词形式。identify 意思是“识别,认出”,来源于法语 identité,同英语 identifier。与 Authentication 的区别是,Identification 仅表示识别出唯一性而不一定辨别真实性。比如在用户登录这个场景下,Identification 是确认用户名确实存在的过程,Authentication 是确定这个用户名和密码是正确的过程。

这三个单词来源于完全不同的词根,词根也来源于完全不同的语言,所以在它们含义的区别还是很大的。

Authentication

Authentication 是验证一个特定操作的过程,这个操作通常情况下就是“登录”,需要操作者提供一些信息,认证提供方通过这些信息判断这个操作的来源确实是真正的操作者。至于这个认证通过之后,怎么给操作者一个继续。以下描述中,默认把认证提供方叫做为服务端,操作者叫做为用户或者客户端。

涉及到的技术可能有:静态密码(口令)、两步认证(2FA)、OIDC、生物特征认证、JWT、HMAC 等。

Authorization

Authorization 是授予某个用户、功能、节点、终端等一些特点的权限或者策略。从一个完整的权限管理系统包括操作、策略、角色、用户、用户组等,详细可以参考 AWS IAM 的功能:https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/introduction.html

涉及到的技术可能有:角色设计、ACL、OAuth 等。