什么是OAuth2.0

什么是OAuth2.0

什么是OAuth2.0

认证流程通常包括以下步骤

  1. 客户端向授权服务器发送认证请求,包括客户端ID和重定向URI。
  2. 授权服务器要求用户进行身份验证,并请求用户授权访问其受保护资源。
  3. 用户同意授权,授权服务器将重定向用户到客户端提供的重定向URI,并附带授权码。
  4. 客户端使用授权码向授权服务器请求访问令牌。
  5. 授权服务器验证客户端身份和授权码,并向客户端颁发访问令牌。
  6. 客户端使用访问令牌向资源服务器请求访问受保护资源。

OAuth2 有4种授权模式

名词定义

(1) Third-party application:第三方应用程序,本文中又称"客户端"(client),比如打开知乎,使用第三方登录,选择qq登录,这时候知乎就是客户端。

(2)HTTP service:HTTP服务提供商,本文中简称"服务提供商",即上例的qq。

(3)Resource Owner:资源所有者,本文中又称"用户"(user),即登录用户。

(4)User Agent:用户代理,本文中就是指浏览器。

(5)Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。

(6)Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。

1. OAuth2简易实战(一)-四种模式

1.1. 隐式授权模式(Implicit Grant)

什么是OAuth2.0

  • 第一步:用户访问页面时,重定向到认证服务器。
  • 第二步:认证服务器给用户一个认证页面,等待用户授权。
  • 第三步:用户授权,认证服务器想应用页面返回Token
  • 第四步:验证Token,访问真正的资源页面

什么是OAuth2.0

1.2. 授权码授权模式(Authorization code Grant)

什么是OAuth2.0

  • 第一步:用户访问页面
  • 第二步:访问的页面将请求重定向到认证服务器
  • 第三步:认证服务器向用户展示授权页面,等待用户授权
  • 第四步:用户授权,认证服务器生成一个code和带上client_id发送给应用服务器
  • 然后,应用服务器拿到code,并用client_id去后台查询对应的client_secret
  • 第五步:将code、client_id、client_secret传给认证服务器换取access_token和
  • refresh_token
  • 第六步:将access_token和refresh_token传给应用服务器
  • 第七步:验证token,访问真正的资源页面

什么是OAuth2.0

案例Github自取:GitHub – PinkPig-cq/springSecurityoAuth: Spring-Security基于OAuth2.0的授权码验证

其中的access code授权码模式在实现时可以使用JWT生成code, 也可以不用. 它们之间没有必然的联系;

  • 示例2:QQ音乐使用微信登录

什么是OAuth2.0

1.3. 密码模式(Resource Owner Password Credentials Grant)

什么是OAuth2.0

  • 第一步:用户访问用页面时,输入第三方认证所需要的信息(QQ/微信账号密码)
  • 第二步:应用页面那种这个信息去认证服务器授权
  • 第三步:认证服务器授权通过,拿到token,访问真正的资源页面

优点:不需要多次请求转发,额外开销,同时可以获取更多的用户信息。(都拿到账号密码了)

缺点:局限性,认证服务器和应用方必须有超高的信赖。(比如亲兄弟?)

应用场景:自家公司搭建的认证服务器

1.4. 客户端凭证模式(Client Credentials Grant)

什么是OAuth2.0

  • 第一步:用户访问应用客户端
  • 第二步:通过客户端定义的验证方法,拿到token,无需授权
  • 第三步:访问资源服务器A
  • 第四步:拿到一次token就可以畅通无阻的访问其他的资源页面。

这是一种最简单的模式,只要client请求,我们就将AccessToken发送给它。这种模式是最方便但最不安全的模式。因此这就要求我们对client完全的信任,而client本身也是安全的。

因此这种模式一般用来提供给我们完全信任的服务器端服务。在这个过程中不需要用户的参与。

使用HTTPS保护用户密码

在进一步讨论OAuth2和JWT的实现之前,有必要说一下,两种方案都需要SSL安全保护,也就是对要传输的数据进行加密编码。

安全地传输用户提供的私密信息,在任何一个安全的系统里都是必要的。否则任何人都可以通过侵入私人wifi,在用户登录的时候窃取用户的用户名和密码等信息。

一些重要的实施考虑在做选择之前,参考一下下边提到的几点。

时间投入OAuth2是一个安全框架,描述了在各种不同场景下,多个应用之间的授权问题。有海量的资料需要学习,要完全理解需要花费大量时间。甚至对于一些有经验的开发工程师来说,也会需要大概一个月的时间来深入理解OAuth2。这是个很大的时间投入。相反,JWT是一个相对轻量级的概念。可能花一天时间深入学习一下标准规范,就可以很容易地开始具体实施。

出现错误的风险OAuth2不像JWT一样是一个严格的标准协议,因此在实施过程中更容易出错。尽管有很多现有的库,但是每个库的成熟度也不尽相同,同样很容易引入各种错误。在常用的库中也很容易发现一些安全漏洞。当然,如果有相当成熟、强大的开发团队来持续OAuth2实施和维护,可以一定成都上避免这些风险。

社交登录的好处在很多情况下,使用用户在大型社交网站的已有账户来认证会方便。如果期望你的用户可以直接使用Facebook或者Gmail之类的账户,使用现有的库会方便得多。

OAuth2的使用场景

OAuth2用在使用第三方账号登录的情况(比如使用weibo, qq, github登录某个app)

如果设计的API要被不同的App使用,并且每个App使用的方式也不一样,使用OAuth2是个不错的选择。

优势

  • 灵活的实现方式
  • 可以和JWT同时使用
  • 可针对不同应用扩展

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/31066

(0)
优速盾-小U的头像优速盾-小U
上一篇 2024年7月7日 06:53
下一篇 2024年7月7日 10:35

相关推荐

  • web 安全

    一、客户端脚本安全 (1)跨站脚本攻击(XSS): XSS攻击,通常指黑客通过“html注入” 篡改了网页,插入了恶意的脚本,从而在用户浏览网页的时候,控制用户浏览器的一种攻击。 …

    网站百科 2023年7月30日
    00768
  • 受到 1 万点暴击,二狗子被 DDoS 攻击的惨痛经历

    二狗子的遭遇 “好消息,好消息,免费 ddos 攻击软件上线了,性感黑客在线攻击,帮您攻克所有商业难题。”二狗子不知道在看着什么网站,新买的 Mac 中发出热闹的声音。 二狗子想知…

    2024年1月3日
    00701
  • 转:国内从事CV相关的企业

      经常碰到朋友问我国内从事计算机视觉(CV)领域的公司的发展情况,产品情况,甚至找工作等问题,这里,我给出自己收集的国内从事CV相关领域的公司网址及其主要产品,有兴趣的…

    网站百科 2024年5月27日
    00582
  • 华为云“DDoS高防+CDN”联动

    操作场景 如果您的业务(如视频、电商平台)有大量图片或视频等资源需要为用户展示,且希望这些资源可以被用户快速获取。您可以使用华为云“ddos高防+cdn”联动方案,使这些资源快速被…

    网站百科 2025年6月18日
    00411
  • 免密登录

    场景:在成都服务器上,免密登录阿里云服务器 成都服务器:192.168.1.247    阿里云服务器:123.57.163.03 实现方法: 在成都服务器上生…

    网站百科 2025年6月18日
    00254
  • UDP反射DDoS攻击原理和防范

      反射攻击的防范措施 上述协议安装后由于有关服务默认处于开启状态,是其被利用的一个重要因素。因此,防范可以从配置主机服务选项和访问控制权限(ACL)入手。具体建议如下:…

    网站百科 2024年3月1日
    00749
  • 最新网站安全防护解决办法大全

      Web的安全防护早已讲过一些专业知识了,下边再次说一下网站安全防护中的登陆密码传输、比较敏感实际操作二次验证、手机客户端强认证、验证的不正确信息、避免暴力破jie密码…

    2023年6月11日
    00633
  • 阿里云安全防坑指南

     主要事例:  一:漏洞类型以及典型事件: Webshell事件 反弹shell事件 Openssl反弹事件 Sql注入事件 阿里云私钥(ak)泄漏事件 二:五…

    2023年9月4日
    00877
  • CC攻击原理及防御策略详解

    cc攻击是ddos(分布式拒绝服务)的一种,相比其它的 DDoS攻击 CC似乎更有技术含量一些。这种攻击你见不到虚假IP,见不到特别大的异常流量,但造成服务器无法进行正常连接,一条…

    网站百科 2023年10月29日
    00816
  • webday8

    DNS:域名和IP相互映射的数据库系统 1:系统首先查找本地DNS缓存和hosts文件信息是否有对应的IP地址,如有直接访问ip对应的服务器(通过访问host文件查找目标ip?) …

    网站百科 2024年1月24日
    00623

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml