身份验证和授权之间有区别吗?
Posted
技术标签:
【中文标题】身份验证和授权之间有区别吗?【英文标题】:Is there a difference between authentication and authorization? 【发布时间】:2011-09-16 02:35:19 【问题描述】:我看到这两个术语经常出现(特别是在基于 Web 的场景中,但我想不限于此),我想知道是否有区别。
在我看来,它们都意味着你可以做你正在做的事情。那么这只是一个命名法,还是在含义上有基本的区别?
【问题讨论】:
是的。有一个大的区别。维基说什么?有了 148k,现在真的 ;-) 我可以 Authenticate 说你是敌人间谍(或没有许可的私人),没有 Authorizing 你可以访问绝密数据。 这是“正品”和“授权”的区别;无济于事,两者都缩写为“auth”。 Apache 用“authn”和“authz”来区分它们。 这里解释得很简单:serverfault.com/a/57082/227016 这能回答你的问题吗? Authentication versus Authorization 【参考方案1】:确实存在根本区别。身份验证是系统可以安全地识别其用户的机制。身份验证系统寻求提供问题的答案:
用户是谁? 用户真的是他们声称/代表的那个人吗?相比之下,授权是系统确定特定(经过身份验证的)用户对系统控制的资源应具有何种访问级别的机制。对于可能与基于 Web 的场景相关或不相关的示例,数据库管理系统可能被设计为向某些特定的个人提供从数据库中检索信息的能力,但不能更改存储在数据库中的数据的能力。数据库,同时赋予其他人更改数据的能力。授权系统提供了问题的答案:
用户 X 是否有权访问资源 R? 用户 X 是否有权执行操作 P? 用户 X 是否有权对资源 R 执行操作 P?Steve Riley 写了一篇很好的 essay 说明为什么它们必须保持不同。
【讨论】:
身份验证也适用于其他事物(例如 MAC)。 你提供的文章很棒,谢谢分享。【参考方案2】:身份验证是指验证实体的身份。授权处理允许经过身份验证的实体执行的操作(例如文件权限)。
【讨论】:
【参考方案3】:重点是:
Authentication 处理用户帐户验证。这是一个有效的用户吗?该用户是否已在我们的应用程序中注册?例如:登录 授权处理用户对某些功能的访问验证。此用户是否有权访问此功能?例如:声明、角色【讨论】:
【参考方案4】:根据我的经验,身份验证通常指的是技术性更强的过程,即对用户进行身份验证(通过检查登录名/密码凭据、证书等),而授权更多地用于应用程序的业务逻辑中。
例如,在应用程序中,用户可能登录并通过身份验证,但无权执行某些功能。
【讨论】:
【参考方案5】:在网站上对用户进行身份验证意味着您验证此用户是有效用户,即验证用户使用的用户名/密码或证书等。通俗地说,是允许进入建筑物的人?
授权是验证用户是否有权访问网站的某些资源或部分的过程,例如,如果它是 CMS,那么用户是否有权更改网站的内容。就写字楼场景而言,是否允许用户进入办公室的网络机房。
【讨论】:
【参考方案6】:如果我可以登录,我的凭据将得到验证并且我已通过身份验证。如果我可以执行特定任务,我有权这样做。
【讨论】:
【参考方案7】:身份验证验证您是谁,而授权验证您被授权做什么。例如,您可以通过 ssh 客户端登录到您的 Unix 服务器,但您无权浏览 /data2 或任何其他文件系统。认证成功后进行授权............
【讨论】:
【参考方案8】:与尝试明确指定定义或技术的其他回复相比。我将提交一个示例可能更有价值。
这是一篇与passport versus a lock and key 非常相似的文章
在谈到身份验证(也称为 AuthN)时,请考虑身份。身份验证试图回答“这个人就是他们所说的那个人吗?”它是相当于护照或国民身份证检查的软件。或者用更现实的说法,身份验证是一个类似的过程,当你看着另一个人的脸,认出这是你大学的朋友,而不是你讨厌的二楼邻居。
另一方面,授权(也称为 AuthZ)与权限有关。授权回答了一个问题“这个人可以在这个空间做什么?”您可以将其视为您的房屋钥匙或办公室徽章。你能打开你的前门吗?你讨厌的邻居可以随意进入你的公寓吗?还有更多,一旦进入你的公寓,谁可以使用厕所?谁可以从你隐藏在厨房橱柜中的秘密饼干中吃东西?
【讨论】:
【参考方案9】:身份验证验证您是谁,而授权验证您被授权做什么。例如,您可以通过 ssh 客户端登录到您的 Unix 服务器,但您无权浏览 /data2 或任何其他文件系统。认证成功后进行授权。
【讨论】:
【参考方案10】:身份验证:验证用户是谁。
要进行身份验证,用户需要提供凭据信息,例如用户名和密码,如果凭据有效,用户会收到一个令牌,该令牌可以与将来的请求一起发送,以验证其身份验证。
授权:确定允许用户做什么。
从用户的角度来看,当她能够发送访问系统的请求并执行某些操作(例如在系统中上传文件)并且它可以正常工作时,就会成功授权。
身份验证仅验证身份 - 它确认用户就是她声称的身份。授权决定了经过验证的用户可以访问哪些资源。
【讨论】:
【参考方案11】:身份验证
身份验证可验证您的身份。例如,您可以使用 ssh 客户端登录您的服务器,或使用 POP3 和 SMTP 客户端访问您的电子邮件服务器。
授权
授权验证您有权执行的操作。例如,您可以通过 ssh 客户端登录到您的服务器,但您无权浏览 /data2 或任何其他文件系统。认证成功后进行授权。
【讨论】:
【参考方案12】:授权是服务器确定客户端是否有权使用资源或访问文件的过程。
当服务器需要确切知道谁在访问他们的信息或站点时,服务器会使用身份验证。
【讨论】:
【参考方案13】:简单的实时示例,如果学生来学校,那么校长正在检查身份验证和授权。 身份验证: 检查学生证,这意味着他或她是否属于我们学校。 授权: 检查学生是否有权进入计算机编程实验室。
【讨论】:
【参考方案14】:我试图创建一个图像来用最简单的语言来解释这一点
1) 身份验证的意思是“你就是你所说的那个人吗?”
2) 授权意味着“你应该能够做你想做的事吗?”。
这也在下图中进行了描述。
【讨论】:
你为什么要添加一张只与你的帖子中的文字完全相同的图片? :)【参考方案15】:身份验证:
这是验证身份是真还是假的过程。换句话说,验证用户确实是他或她声称自己的那个人。
身份验证类型:
-
用户名+密码认证类型
使用社交帐户进行身份验证
无密码认证
多因素身份验证
基于指纹或视网膜的身份验证等
OpenID 是一种开放的身份验证标准。
授权
确定具有给定身份或角色的用户可以访问哪些资源的技术。
OAuth 是一种开放的授权标准。
【讨论】:
【参考方案16】:身份验证: 应用程序需要知道谁在访问该应用程序。所以身份验证与单词who有关。应用程序将通过登录表单对其进行检查。用户将输入用户名和密码,这些输入将由应用程序验证。验证成功后,用户被声明为已通过身份验证。
授权是检查用户是否可以访问应用程序或哪些用户可以访问,哪些用户不能访问。 来源:Authentcation Vs Authorization
【讨论】:
以上是关于身份验证和授权之间有区别吗?的主要内容,如果未能解决你的问题,请参考以下文章
OAuth2:JWT授权授予和客户端凭据授权与JWT客户端身份验证之间的区别是什么?