在web应用程序中有什么不同?我经常看到缩写“auth”。它是代表认证还是授权?或者两者都有?
当前回答
假设你注册了一个技术会议。你到了,走到外面的登记桌前领取你的会议徽章。你必须先出示某种形式的身份证明,比如驾照。你的驾照可以识别你的身份(比如你的照片),并由一个受信任的实体(车管所)分发。这就是身份验证。
工作人员将你的徽章交给你,徽章是红色、蓝色或绿色的。在会场内走一圈,你会发现一些展品都是用颜色标注的。有了绿色徽章,您可以进入绿色的展品,但不能进入蓝色或红色的展品。徽章不是由DMV分发的,而是由会议本身分发的,用于访问会议厅内的会议资源。
徽章上不一定有任何可以识别你的东西(徽章上可能印着你的名字,但你可以很容易地借用你朋友的蓝色徽章去参观蓝色展览——没有人会检查你的名字,只有蓝色)。你徽章的颜色允许你进入展品。这就是授权。
其他回答
补充@Kerrek的答案;
身份验证为通用形式(所有员工都可以登录机器)
授权是专用形式(但管理员只能在机器上安装/卸载应用程序)
Authentication | Authorization | |
---|---|---|
What does it do? | Verifies credentials | Grants or denies permissions |
How does it work? | Through passwords, biometrics, one-time pins, or apps | Through settings maintained by security teams |
Is it visible to the user? | Yes | No |
It is changeable by the user? | Partially | No |
How does data move? | Through ID tokens | Through access tokens |
更详细的答案请参考:https://www.okta.com/identity-101/authentication-vs-authorization/
身份验证是验证您的登录用户名和密码的过程。
授权是验证您是否可以访问某些内容的过程。
定义
身份验证——你是你声称的那个人吗? 授权——你被授权去做你想做的事情吗?
例子
web应用程序使用谷歌登录。当用户成功登录后,谷歌发送回:
JWT令牌。可以对其进行验证和解码以获得身份验证信息。令牌是由谷歌签名的吗?用户的姓名和电子邮件是什么? 一个访问令牌。这将授权web应用程序代表用户访问谷歌api。例如,应用程序可以访问用户的谷歌日历事件吗?这些权限取决于请求的范围,以及用户是否允许。
另外:
公司可能有一个管理仪表板,允许客户支持来管理公司的用户。该公司使用谷歌Sign-In,而不是提供允许客户支持访问此仪表板的自定义注册解决方案。
JWT令牌(从谷歌登录过程接收)被发送到公司的授权服务器,以确定用户是否拥有组织托管域(email@company.com)的G Suite帐户?如果他们这样做了,他们是公司为客户支持而创建的谷歌小组的成员吗?如果以上都是,我们可以认为他们是通过认证的。
然后,公司的授权服务器向仪表板应用程序发送一个访问令牌。该访问令牌可用于向公司的资源服务器发出授权请求(例如,向发送回公司所有用户的端点发出GET请求的能力)。
身份验证是通过获取某种凭据(例如用户名密码组合)来验证用户身份的过程,并使用这些凭据来验证用户的身份。
授权是通过检查用户是否具有系统访问权限,从而允许经过认证的用户访问其资源的过程。您可以通过向已验证的用户授予或拒绝特定的权限来控制访问权限。因此,如果身份验证成功,则启动授权过程。认证过程始终进行到授权过程。
用于授权的JWT: JWT是一种基于JSON的安全令牌格式,它基本上是一个base64 url编码的字符串,用于传输 保护两个应用程序之间的内容。它们用于保护Web api中的请求数据。这些都包含在授权HTTP报头中,作为承载身份验证方案的一部分。
OAuth代表授权:OAuth不是API或服务:它是授权的开放标准,任何人都可以实现它。有了OAuth,你可以用你的谷歌、Facebook、Twitter或微软账户登录第三方网站,而不需要提供密码。这样你就可以避免在互联网上使用的每个web应用程序上创建帐户和记住密码。
推荐文章
- JavaScript:客户端验证与服务器端验证
- ASP。NET身份的默认密码散列器-它是如何工作的,它是安全的?
- 人们如何在Go中管理身份验证?
- 主体、使用者和主体之间的意义和区别是什么?
- 检查SQL Server登录是否已经存在
- 阻止人们入侵基于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响应前?