身份验证与授权

Web应用程序的上下文有什么区别?我经常看到缩写“auth”。它代表auth-认证还是auth-演讲?还是两者兼而有之?

254628 次浏览

正如身份验证vs授权所说:

身份验证是机制 系统可以安全地识别 他们的用户身份验证系统 回答以下问题:

  • 谁是用户?
  • 用户真的是他/她代表自己的人吗?

#相比之下,EYZ0是 系统决定的机制 什么级别的访问特定 经过身份验证的用户必须 控制的安全资源 系统。例如,数据库 管理系统可以这样设计 以提供某些特定 个人能够 从数据库中检索信息 但不是改变数据的能力 存储在数据库中,同时给予 其他个人能够 更改数据。授权系统 回答以下问题:

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

另见:

身份验证是确定某人确实是他们声称的那个人的过程。

未授权是指确定允许谁做什么的规则。例如。亚当可能被授权创建和删除数据库, 而乌萨玛只能阅读。

这两个概念是完全正交和独立的,但两者是安全设计的核心,任何一个都不能正确打开妥协的途径。

在Web应用程序方面,非常粗略地说,身份验证是当您检查登录凭据以查看是否识别用户登录时,授权是当您在权限改造中查找是否允许用户查看,编辑,删除或创建内容时。

简而言之,请:-)

身份验证=登录名+密码(你是谁)

未授权=权限(你被允许做什么)

简短的“auth”最有可能指的是第一个或两个。

添加到@Kerrek的答案;

认证为通用形式(所有员工都可以登录机器)

授权是专门的形式(但管理员只能在机器中安装/卸载应用程序)

在用户上下文中:

身份验证=验证用户是他自称的人(你可以在技术上验证很多不同的东西,比如密码、税务信息、社会保障信息、驾照、指纹或其他生物识别技术……但通常用户名/密码就足够了)

未授权=允许用户做某事(你可以用权限改造中心,删除产品设置角色['管理员','卖方','买方'…]并将这些角色交给用户,然后验证用户有一个允许他做动作的角色)

权限与CRUD操作直接相关,因此如果构建UI,您可以将对象列为行,并在4列中列出创建、读取、更新、删除该对象权限的复选框。

就像我上面的例子一样,“权限改造中心”是控制中心对象的完整创建、读取、更新和删除访问权限,而“删除产品”是产品对象的删除访问权限。

注意:HTTP授权标头旨在作为访问资源的权限,但实际上用作所有资源访问的身份验证。

在我的脑海和代码中更容易想到验证权限,因为这两个词

  • 听起来不一样
  • 没有相同的缩写
  • 授权的实际实施通常涉及实施角色和权限

身份验证是验证,授权是检查权限。Auth可以是两者之一,但更常用于“用户身份验证”,即“用户身份验证”。很多时候没有明确的授权实现(角色和权限),只是身份验证用于提供执行每个可用操作的授权。这就是Auth。

身份验证是验证声明的身份的过程。

  • 例如用户名/密码

通常紧跟授权管理,这是您可以做这个和那个的批准。

  • 例如权限

身份验证是验证您的登录用户名和密码的过程。

授权是验证您是否可以访问某些内容的过程。

我试图创造一个形象来解释这在最简单的词

1)身份验证意味着“你是你所说的那个人吗?”

2)授权意味着“你应该能够做你想做的事情吗?”。

这也在下面的图片中描述。

在此处输入图片描述

我试图用最好的术语来解释它,并创建了一个相同的图像。

这种混淆是可以理解的,因为这两个词听起来很相似,而且这些概念经常密切相关并一起使用。此外,如前所述,常用的缩写Auth没有帮助。

其他人已经很好地描述了身份验证和授权的含义。这里有一个简单的规则来帮助将两者明确区分开来:

  • Authentication验证您的IDentity(或真实性,如果您喜欢)
  • 作者ization验证您的作者ity,即您访问并可能更改某些内容的权利。

定义

身份验证-你是你声称的那个人吗?

未授权-你有权做你想做的任何事情吗?

示例

一个网络应用程序使用谷歌登录。用户成功登录后,Google会发回:

  1. JWT令牌。可以验证和解码以获取权限校验信息。令牌是否由Google签名?用户的姓名和电子邮件是什么?
  2. 访问令牌。此授权代表用户访问Google API的Web应用程序。例如,应用程序可以访问用户的Google日历事件吗?这些权限取决于请求的范围以及用户是否允许。

此外:

公司可能有一个管理仪表板,允许客户支持管理公司的用户。该公司使用Google登录,而不是提供允许客户支持访问此仪表板的自定义注册解决方案。

JWT令牌(从Google登录过程中接收)被发送到公司的授权服务器,以确定用户是否在组织的托管域(email@company.com)中拥有谷歌办公套件帐户?如果他们这样做了,他们是否是为客户支持而创建的公司Google Group的成员?如果以上都是,我们可以认为他们认证

然后,公司的授权服务器向仪表板应用发送一个访问令牌。此访问令牌可用于向公司的资源服务器发出是否授权请求(例如,向发送回公司所有用户的端点发出GET请求的能力)。

Authentication是一个验证过程:

  • 通过提供证明(密钥、生物识别、短信…)来识别系统中的用户身份(用户名、登录名、电话号码、电子邮件…)。多因素身份验证作为扩展。
  • 使用digital signature关于我们检查电子邮件
  • 校验和

AuthorizationAuthentication之后的下一步。它是关于资源的权限/角色/权限。OAuth(开放授权)是授权的一个例子

我发现这篇文章的类比真的帮助了我。

假设一个人走到一扇锁着的门前照顾宠物 当家人外出度假时。那个人需要:

  • 身份验证是钥匙的形式。门上的锁只能以大致相同的方式授予拥有正确钥匙的人访问权限 系统只授予具有正确权限的用户访问权限 证书。
  • 未授权是权限的形式。一旦进入,该人就有权限进入厨房并打开橱柜 持有宠物食品。<强>的人可能没有权限进入 在卧室里小睡一会儿.

简而言之,权限校验是关于用户身份的,而授权管理是关于用户权限的。

想象一下,你已经注册了一个技术会议。你到达并走到外面的注册表前拿你的会议徽章。你必须首先出示某种形式的身份证明,例如驾照。你的驾照识别您(带你的照片,例如)并由可信实体(DMV)分发。这是权限校验

这个人递给你你的徽章,红色、蓝色或绿色。在会议内部走动,一些展品是彩色编码的。有了绿色徽章,你可以进入绿色展品,但不能进入蓝色或红色展品。徽章不是由DMV分发的,而是由会议本身分发的,以访问会议厅内的会议资源。

徽章上不一定有任何东西可以识别你的身份(它可能印有你的名字,但你可以很容易地借用你朋友的蓝色徽章来参观蓝色展览-没有人会检查你的名字,只有蓝色)。你的徽章的颜色允许你进入展品。这是授权管理

身份验证是识别有效用户的过程。

未授权是验证用户访问级别的进程。

应用程序示例 用户一个B都是Inventory应用程序的身份验证用户。 两个用户都可以访问股票,但B对问题项目有更多的授权能力。

  身份验证 未授权
它有什么用? 验证凭据 授予或拒绝权限
它是如何工作的? 通过密码、生物识别、一次性引脚或应用程序 通过安全团队维护的设置
是否对用户可见?
它是由用户改变的吗? 部分
数据如何移动? 通过ID令牌 通过访问令牌

有关更详细的回答,这里是参考:https://www.okta.com/identity-101/authentication-vs-authorization/

身份验证是验证实体身份的过程。例如

  • Webserver每次都要求用户输入登录名/密码,以验证创建帐户的用户是现在访问它的用户。

未授权是允许每个实体所需数量的服务/资源的过程。例如

  • 在博客站点(例如medium.com)上,用户可以创建一个帐户并撰写帖子并发布。用户也可以阅读其他人发布的所有帖子。这里博客服务器首先使用用户登录凭据(登录/密码)对用户进行身份验证,然后它授权读取所有其他帖子并编写/修改仅由用户创建的帖子。这里服务器使用授权来限制每个用户可以修改的所有帖子。
  • 用户可以创建一个免费的google帐户,google server提供邮件,日历,聊天,驱动器等免费服务。但提供给免费用户的所有这些服务的存储空间为15GB(截至目前)。用户可以向google server支付月费或年费以增加存储空间。这里google server授权每个经过身份验证的用户限制资源使用量。

在今天的互联网授权被广泛用于对客户端应用访问限制。

身份验证是通过获取某种凭据(例如他的用户名密码组合)来验证用户身份的过程,并使用这些凭据来验证用户的身份。

未授权是通过检查用户是否具有系统访问权限来允许经过身份验证的用户访问他的资源的过程。您可以通过授予或拒绝对经过身份验证的用户的特定权限来控制访问权限。因此,如果身份验证成功,则开始授权过程。身份验证过程始终进行到授权过程。

用于授权的JWT: JWT是一种基于JSON的安全令牌格式,基本上是一个bas64 url编码的字符串,用作传输的手段 保护两个应用程序之间的内容。它们用于保护Web API中的请求数据。作为承载身份验证方案的一部分,这些包含在授权HTTP标头中。

OAuth用于授权: OAuth不是一种API或服务:它是一个开放的授权标准,任何人都可以实现它。使用OAuth,您可以使用您的Google,Facebook,Twitter或Microsoft帐户登录第三方网站,而无需提供密码。这样您就可以避免在Internet上使用的每个Web应用程序上创建帐户和记住密码。