目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

JAVA全系列 教程

3762个小节阅读:7095.4k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(358)
赞(0)

为什么要使用OAuth2?

OAuth2是一个关于授权的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用。OAuth在全世界得到广泛应用,目前的版本是2.0版。

业务系统中使用登录的几种形式

  • 原生app授权app登录请求后台接口,为了安全认证,所有请求都带token信息,如登录验证、 请求后台数据。
  • 前后端分离单页面应用:前后端分离框架,前端请求后台数据,需要进行OAuth2安全认证,比如 使用vue、react后者h5开发的app
  • 第三方应用授权登录,比如QQ,微博,微信的授权登录。

OAuth2中定义的几个角色

  • Resource owner 资源拥有者

    可理解为用户本人

  • Resource Server 资源服务器

    托管受保护资源的服务器,能够使用访问令牌接受和响应受保护资源请求

  • 客户端

    可理解为你想登录的网站或应用

  • Authentication Server 认证服务器

    客户端向认证服务器申请令牌,认证服务器经验证通过后向客户端授权许可,可理解为第三方的QQ、微信服务器。

OAuth2授权认证流程

image-20230404094400453

什么情况下需要使用OAuth2?

  • 单点登录

    项目中有多个微服务,需要一个专门的认证中心,所有服务都需要到认证中心进行认证,只做一次登录,就可以在授权范围内的多个服务之间来回穿行。

  • 第三方授权登录

    这种场景在一些网站登录时很常见,可以自行注册该网站的账户登录,也可使用第三方授权登录的方式,比如通过QQ,微博,等知名网站进行授权登录。

OAuth2的授权登录方式

  • 授权码模式

    这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏。

  • 密码式

    如果你高度信任某个应用,RFC 6749 也允许用户把用户名和密码,直接告诉该应用。该应用根据你的用户名和密码生成令牌,这种方式称为"密码式"。

Spring Cloud OAuth2 + JWT实现

在本项目的统一认证场景中,资源服务器就是我们各种受到保护的微服务,微服务中的各种API访问接口就是资源,发起http请求的浏览器就是client端。

image-20230315161333927

实体类 LoginUser.java

数据传输对象DTO LoginDto、Result

登录控制器LoginController.java

mapper接口,LoginUserMapper.java

LoginUserService.java

Service实现类

启动后登录页面

image-20230315172405724

 

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2