认证和授权有什么区别?

101

我经常看到这两个术语在讨论中被使用(特别是在基于Web的场景中,但我想这不仅限于此),我想知道它们是否有区别。

在我看来,它们都意味着你可以做你正在做的事情。那么这只是一个命名上的问题,还是在意义上有基本的区别?

我看到这两个术语经常使用(特别是在基于Web的情境下,但我认为这不仅限于此),我想知道它们是否有区别。
在我看来,它们都表示您被允许执行您正在执行的操作。所以这只是一种命名上的差异,还是在含义上有根本的区别?

3
是的,有一个很的区别。维基百科上说什么?只有14.8万字,真的吗;-) 我可以验证你是敌方间谍(或没有许可证的士兵),但我不会授权你访问最高机密数据。 - user166390
这是“authentic”和“authorized”的区别;不幸的是,它们都缩写为“auth”。Apache使用“authn”和“authz”来区分它们。 - tc.
这个问题在这里非常简单地解释了:http://serverfault.com/a/57082/227016 - Kuldeep Jain
这回答您的问题吗?认证与授权 - Løiten
16个回答

147

确实存在根本区别。认证是系统可以安全地识别其用户的机制。认证系统寻求为以下问题提供答案:

  • 谁是用户?
  • 用户是否真的是他们声称/代表的人?

相比之下,授权是系统确定特定(已认证)用户对系统控制的资源应具有何种访问级别的机制。举个可能与基于Web的场景有关的例子,数据库管理系统可以设计成在提供某些指定人员从数据库中检索信息的能力的同时,不允许他们更改存储在数据库中的数据,而让其他人拥有更改数据的权限。授权系统提供以下问题的答案:

  • 用户X是否被授权访问资源R?
  • 用户X是否被授权执行操作P?
  • 用户X是否被授权对资源R执行操作P?

Steve Riley写了一篇相当好的文章,阐述了它们为什么必须保持独立。


3
认证也适用于其他事物(例如MAC地址)。 - tc.
你提供的文章太棒了,感谢分享。 - Abdel-Raouf

44

认证是指验证实体的身份。授权涉及对经过身份验证的实体允许进行的操作(例如文件权限)。


13

主要的观点是:

  • 身份验证(Authentication)涉及用户账户验证。这是一个有效的用户吗?这个用户是否在我们的应用程序中注册过?例如:登录
  • 授权(Authorization)涉及用户对某些功能的访问权限验证。这个用户是否有权利/权限访问这个功能?例如:声明、角色

2

根据我的经验,认证通常指更技术性的过程,即通过检查登录/密码凭据、证书等对用户进行身份验证,而授权则更多地用于应用程序的业务逻辑中。

例如,在应用程序中,用户可能会登录并进行身份验证,但未被授权执行某些功能。


1
如果我能够登录,我的凭证将得到验证,并且我将被认证。如果我能够执行特定任务,那么我就有权限这样做。

1

在网站上对用户进行身份验证意味着您验证该用户是有效用户,即使用用户名/密码或证书等验证用户身份。通俗地说,这个人是否被允许进入建筑物?

授权是验证用户是否有权访问某些资源或网站的某些部分的过程,例如,如果是CMS,则用户是否有权更改网站内容。就办公楼场景而言,用户是否被允许进入办公室的网络室。


1

身份验证验证您是谁,授权验证您被授权执行什么操作。例如,您可以通过ssh客户端登录到Unix服务器,但您无权浏览/data2或任何其他文件系统。成功进行身份验证后才会进行授权。


1
与其他试图明确指定定义或技术的响应相比,我将提交一个更有价值的示例。
下面是一篇文章,它通过一个护照与锁和钥匙的巧妙类比来阐述了身份验证和授权的概念。
在谈论身份验证(也称为AuthN)时,请考虑身份。身份验证试图回答“这个人是他们所说的人吗?”这是护照或国家身份证检查的软件等效物。或者更加现实地说,身份验证是一个类似于你看着另一个人的脸来确认这是你大学时的朋友而不是你讨厌的二楼邻居的过程。
另一方面,授权(也称为AuthZ)则涉及权限。授权回答了一个问题,“这个人在这个空间里被允许做什么?”你可以将其视为你的房门钥匙或办公室通行证。你能打开前门吗?你讨厌的邻居可以随意进入你的公寓吗?而且,一旦进入你的公寓,谁可以使用卫生间?谁可以从你藏在厨柜里的秘密饼干中取食?

0

认证:验证用户身份。

为了进行认证,用户提供凭据信息,例如用户名和密码。如果凭据有效,则用户会收到一个令牌,该令牌可以随后的请求一起发送,以验证其身份。

授权:确定用户被允许做什么。

从用户的角度来看,成功的授权发生在她能够发送请求以访问系统并执行某些操作(例如在系统中上传文件)并且操作成功时。

认证仅验证身份-它确认用户是其所声称的人。授权确定经过验证的用户可以访问哪些资源。


0

认证

认证验证你的身份。例如,你可以使用ssh客户端登录到你的服务器,或者使用POP3和SMTP客户端访问你的电子邮件服务器。

授权

授权验证你被授权做什么。例如,你被允许通过ssh客户端登录到你的服务器,但你没有权限浏览/data2或任何其他文件系统。授权发生在成功认证之后。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接