热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安全认证OAuth2与Spring

前言你在登录CSDN时,可能会选择微信/QQ/微博等等登录,这

前言

你在登录CSDN时,可能会选择微信/QQ/微博等等登录,这时,即使你没有注册过CSDN账号,你同样可以登录。而使用哈喽单车使用支付宝登录也是同样的道理。这时,你已经在使用OAuth2了。

什么是OAuth2

借一下官方定义:
OAuth2.0是一种工业级认证协议。OAuth2.0针对web应用、桌面应用、手机、客厅设备提供特定的授权流程,同时重点关注客户端开发人员的简单性。这个规范及其扩展正在IETF OAuth Working Group中开发。

OAuth2的认证方式

在这里插入图片描述
OAuth提供多种认证方式

  1. 验证码认证模式。这也是前言中给大家说的认证流程使用的方式。
  2. PKCE。从官方的表述,这个其实是验证码认证方式的一种拓展,提供CSRF攻击防御、验证码注入攻击的防御。
  3. 客户端认证模式。以客户端的名义申请令牌,而不是资源所有者。
  4. 设备码认证模式。为非浏览器客户端提供的,通过设备码获取令牌。感兴趣的可以自己去看下官方文档。
  5. 令牌刷新认证模式。这个是你拿着一个失效的令牌,可以去认证服务器换一个有效的令牌。
  6. 简化认证模式。就是你不需要再用验证码才能取换令牌了。早前推荐在原生应用和Javascript应用中使用。但现在这两种应用也推荐使用PKCE了。官方已经不推荐使用该模式了。
  7. 密码模式。通过用户名密码来换token。这意味着资源所有者的密码会经过客户端。因此,一般情况下,只有公司内部应用才会使用该方式。

以上认证方式,很多时候,大家都只会谈到其中四种:

  • 验证码认证模式
  • 客户端认证模式
  • 简化认证模式
  • 密码模式

但大家应当要知道其他三种方式的存在,不然连Spring的几种支持OAuth2的版本的特性都看不懂啊。

Spring OAuth2藩王割据的局面

上面说到Spring对OAuth2的支持,在此,不得不跟大家扯一下,Spring对OAuth2支持的藩王割据的局面。
Spring Security OAuth, Spring Cloud Security, Spring Boot 1.5.x, 以及新的Spring Security 5都提供了对OAuth2的支持。七零八落的。这不,今天想要搭个环境都头疼不已。我是选Spring呢?还是Spring呢?还是Spring呢???

官方也是挺头疼的。于是搞了个计划,在SpringSecurity5中统一对OAuth2的支持,这也是官方标题说的Spring Security 中对下一代OAuth2.0的支持。但是,好死不死,偏偏把认证服务器剥离出来(最开始一度想要放弃支持认证服务器)。重新搞了项目提供认证服务器。
到这里,为了防止有些小迷糊在学习的时候还不知道应该使用哪个,顺便说一下。如果是自己学习新技术,那通过官方的认证服务器项目搭建认证服务器,然后使用SpringSecurity5来构建资源服务器和客户端。

OAuth2的概念

不好意思,各位。上面可能有些概念没将清楚,听得有点懵吧。现在,以验证码模式为例,咱们来捋一捋。
在这里插入图片描述
图为OAuth官方的。我们可以看到这里有三个很明显的角色:

  • Client客户端
  • Resource资源服务器
  • AuthorizationServer认证服务器
    以通过QQ登录CSDN为例,客户端就是CSDN,而资源服务器和认证服务器都是QQ内部的服务。CSDN请求的是QQ的用户资源,对应的,在QQ内部有个用户资源服务器,还有个认证服务器。一般情况下,尤其是微服务架构,认证服务器和资源服务器通常都是一个公司的。而客户端就是第三方应用。
后记

今天先到这里吧,感觉东西有点的多。下次有时间再来看看新版SpringSecurity5跟认证服务器的组合怎么搭建。


推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
author-avatar
我叫梁家耀_312
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有