在web应用程序中有什么不同?我经常看到缩写“auth”。它是代表认证还是授权?或者两者都有?
当前回答
定义
身份验证——你是你声称的那个人吗? 授权——你被授权去做你想做的事情吗?
例子
web应用程序使用谷歌登录。当用户成功登录后,谷歌发送回:
JWT令牌。可以对其进行验证和解码以获得身份验证信息。令牌是由谷歌签名的吗?用户的姓名和电子邮件是什么? 一个访问令牌。这将授权web应用程序代表用户访问谷歌api。例如,应用程序可以访问用户的谷歌日历事件吗?这些权限取决于请求的范围,以及用户是否允许。
另外:
公司可能有一个管理仪表板,允许客户支持来管理公司的用户。该公司使用谷歌Sign-In,而不是提供允许客户支持访问此仪表板的自定义注册解决方案。
JWT令牌(从谷歌登录过程接收)被发送到公司的授权服务器,以确定用户是否拥有组织托管域(email@company.com)的G Suite帐户?如果他们这样做了,他们是公司为客户支持而创建的谷歌小组的成员吗?如果以上都是,我们可以认为他们是通过认证的。
然后,公司的授权服务器向仪表板应用程序发送一个访问令牌。该访问令牌可用于向公司的资源服务器发出授权请求(例如,向发送回公司所有用户的端点发出GET请求的能力)。
其他回答
假设你注册了一个技术会议。你到了,走到外面的登记桌前领取你的会议徽章。你必须先出示某种形式的身份证明,比如驾照。你的驾照可以识别你的身份(比如你的照片),并由一个受信任的实体(车管所)分发。这就是身份验证。
工作人员将你的徽章交给你,徽章是红色、蓝色或绿色的。在会场内走一圈,你会发现一些展品都是用颜色标注的。有了绿色徽章,您可以进入绿色的展品,但不能进入蓝色或红色的展品。徽章不是由DMV分发的,而是由会议本身分发的,用于访问会议厅内的会议资源。
徽章上不一定有任何可以识别你的东西(徽章上可能印着你的名字,但你可以很容易地借用你朋友的蓝色徽章去参观蓝色展览——没有人会检查你的名字,只有蓝色)。你徽章的颜色允许你进入展品。这就是授权。
定义
身份验证——你是你声称的那个人吗? 授权——你被授权去做你想做的事情吗?
例子
web应用程序使用谷歌登录。当用户成功登录后,谷歌发送回:
JWT令牌。可以对其进行验证和解码以获得身份验证信息。令牌是由谷歌签名的吗?用户的姓名和电子邮件是什么? 一个访问令牌。这将授权web应用程序代表用户访问谷歌api。例如,应用程序可以访问用户的谷歌日历事件吗?这些权限取决于请求的范围,以及用户是否允许。
另外:
公司可能有一个管理仪表板,允许客户支持来管理公司的用户。该公司使用谷歌Sign-In,而不是提供允许客户支持访问此仪表板的自定义注册解决方案。
JWT令牌(从谷歌登录过程接收)被发送到公司的授权服务器,以确定用户是否拥有组织托管域(email@company.com)的G Suite帐户?如果他们这样做了,他们是公司为客户支持而创建的谷歌小组的成员吗?如果以上都是,我们可以认为他们是通过认证的。
然后,公司的授权服务器向仪表板应用程序发送一个访问令牌。该访问令牌可用于向公司的资源服务器发出授权请求(例如,向发送回公司所有用户的端点发出GET请求的能力)。
身份验证是验证所宣布的身份的过程。
例如,用户名/密码
通常接下来是授权,也就是批准你可以这样做或那样做。
如权限
Authentication是一个验证的过程:
系统中的用户身份(用户名、登录名、电话号码、电子邮件……),通过提供证明(密钥、生物识别、短信……)作为扩展的多因素身份验证。 使用数字签名检查电子邮件[关于] 校验和
授权是身份验证之后的下一步。它是关于资源的权限/角色/特权。OAuth(开放授权)是授权的一个例子
在用户环境中:
身份验证=验证用户的身份(从技术上讲,你可以验证很多不同的东西,比如密码、税务信息、社会安全信息、驾照、指纹或其他生物识别信息……但通常用户名/密码就足够了)
授权=允许用户做某事(你可以设置角色['管理员','卖家','买家'…权限['访问控制中心','删除产品'…并将这些角色赋予用户,然后验证用户有一个允许他执行操作的角色)
权限与CRUD操作有直接关系,因此如果构建一个UI,您可以将对象列为行,并在任意给定角色的对象权限的创建、读取、更新和删除的4列中设置复选框。
就像在我上面的例子中,“访问控制中心”是对控制中心对象的完整的创建、读取、更新和删除访问,而“删除产品”是对产品对象的删除访问。
注意:HTTP授权头用于访问资源的权限,但实际上用于所有资源访问的身份验证。
在我的头脑中和代码中更容易想到验证和权限,因为这两个词
听起来不一样 不要有相同的缩写 授权的实际实现通常涉及角色和权限的实现
身份验证是验证,授权是检查权限。Auth可以是任何一种意思,但更常用的是“用户认证”,即。“用户身份验证”。很多时候没有显式的授权实现(角色和权限),只是使用身份验证来提供执行每个可用操作的授权。这就是Auth。
推荐文章
- 阻止人们入侵基于php的Flash游戏高分表的最佳方法是什么
- SQL Server 2008不能用新创建的用户登录
- Passport.js -错误:序列化用户到会话失败
- 令牌身份验证vs. cookie
- JWT vs cookie用于基于令牌的身份验证
- 在php中生成一个随机密码
- java.util.Random和java.security. securerrandom的区别
- Docker和安全密码
- 准备好的语句如何防止SQL注入攻击?
- 为什么人们会写“throw 1;<不要邪恶>”和“for(;;);”在json响应前?
- 非加密用途的最快哈希?
- 为跨源请求设置cookie
- SHA512 vs. Blowfish和Bcrypt
- REST身份验证方案的安全性
- 如何在postgresql中创建数据库用户?