oauth2.0第2季 分布式认证与授权实现单点登录

一  oauth介绍

1.0  疑问汇总

1.使用jwttoken进行令牌传输,资源服务器在本地怎么验证token?

1.1 oauth的基础内容

1.1.1 oauth是什么

1.1.2 oauth的角色

1.1.3 oauth的认证流程

1.1.4 oauth的4种模式

1.2 为何要用oauth2.0

1.介绍单体架构  使用sesion保存会话信息的情况

2.前后端分离项目,调用方式

session架构不适合前后端分离项目

3.解决办法,引出oauth2.0

1.3 待验证

配置文件配置了端口喝上下文路径

 访问的时候为: http://localhost:8090/auth/lgoin   如果没有配置/auth这一层级,是不是为

http://localhost:8090/lgoin

二 案例搭建

2.1 搭建父工程

2.2 搭建认证中心服务

2.2.1 认证中心的安全和认证配置

1.认证中心的配置

 

2.安全配置

3.访问端点

所谓访问端点就是 提供访问的url接口地址

4.测试4种验证模式的验证情况

5.密码模式需要在配置文件中添加:authenticationManager(xxxx) 实例

 6.客户端模式

 

 2.2.2 刷新令牌

使用一段时间后,token过期后,需要获取新的token,携带参数以及需要的配置

 

 

 2.2.3 redis管理令牌

 

 添加到容器

  2.2.4 jdbc管理令牌

   2.2.5 jdbc管理授权码

  2.2.6 保存客户端信息

2.2.8 验证认证信息端点

 

 2.2.9 基于RBAC查询数据库认证

2.3  资源管理器服务搭建

2.3.1 原理概述

资源服务服务器实际上就是要调用的各个微服务,如订单服务,商品服务,会员服务等。在微服务的架构中,每个微服务就是资源,当用户请求某个微服务资源时,首先通过认证服务器进行认证与授权,通过后才可以访问对应的资源。

 2.3.2 搭建资源服务工程

 

 2.3.3 请求资源服务器测试

1.不带token直接访问

 2.携带token进行访问

  2.3.4 设置资源的请求范围

禁用session

2.4  使用jwtToken进行认证授权

2.4.1 为何要使用jwt

每次访问资源服务的时候,都要验证token的合法性,远程调用认证服务中验证token的合法性。如果访问量较大影响系统的性能。解决办法使用jwt,jwt包含了用户的基本信息,客户端携带jwt访问资源,资源服务器会通过事先约定好的算法进行解析出来,然后对jwt令牌进行校验,不需要每次远程请求认证服务器。

2.4.2  认证服务配置jwt的对称秘钥

 如下图:

每一个访问资源服务器都要经过此方法进行验证token的合法性。这样会造成认证服务器的压力过大,因此需要一种机制解决此种情况。使用jwt可以直接在资源服务器中,自身进行验证,无需再调用认证中心服务的连接进行验证。

改为:

注册到容器中

 访问:

2.4.3  资源配置jwt的对称秘钥

 1.注释掉调用认证服务代码

2.新增jwt认证

3.容器注册

 2.4.4  认证服务配置jwt的非对称秘钥

 

 

  2.4.5  资源服务配置jwt的非对称秘钥

三   oauth2.0分布式认证授权

3.1 分布式认证授权流程

3.2 eureka注册中心的搭建

 3.3  资源服务器和认证服务器配置注册到eureka中

1.配置pom依赖

2.配置yml文件

3.启动类添加注解 

  3.4  配置网关zuul

3.4.1.基础网关配置

 

 3.4.2 .网关配置资源服务配置类

 1.配置放行和过滤判断的路径

 3.4.3.网关安全配置类

1.配置springsecurityconfig类

  3.4.4.认证过滤器的配置

 2.跨域解决

 3.5.资源服务进行解析并授权

3.5.1 过滤器实现授权

在微服务中接收到网关转发过来的token后,需要我们构建一个Authentication对象来完成微服务的认证与授权;这样这个微服务就可以根据用户所拥有的权限,来判断对应的资源是否可以被用户访问。

 2.封装Authentication

 3.验证访问

  3.6.client1和client2系统配置到网关网关整合单点登录

1.配置注册eureka的信息

2.修改认证服务的端口,改成为网关的端口7001

 3.7 客户端资源服务接口携带令牌token

 2.配置OAuth2RestTemplate

 

3.client1 请求 资源服务器

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/59701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s节点pod驱逐、污点标记

一、设置污点,禁止pod被调度到节点上 kubectl cordon k8s-node-145 设置完成后,可以看到该节点附带了 SchedulingDisabled 的标记 二、驱逐节点上运行的pod到其他节点 kubectl drain --ignore-daemonsets --delete-emptydir-data k8s-node-145 显示被驱逐…

Android需要掌握的shell脚本基础

linux中sh是链接到bash上的,所以sh与bash在功能上是没有区别的,相当于bash解析器是sh的增强版本,所以安卓开发者可以在 git bash中 测试脚本 1,shell脚本运行与输出指令 $ cat test.sh echo 测试 【输出】$ /bin/bash test.…

LeetCode第26~30题解

CONTENTS LeetCode 26. 删除有序数组中的重复项(简单)LeetCode 27. 移除元素(简单)LeetCode 28. 找出字符串中第一个匹配项的下标(简单)LeetCode 29. 两数相除(中等)LeetCode 30. 串…

qt设计界面

widget.h #ifndef WIDGET_H #define WIDGET_H //防止文件重复包含#include <QWidget> //QWidget类所在的头文件&#xff0c;父类头文件 #include<QIcon> #include<QPushButton> …

VS的调试技巧

Visual Studiohttps://visualstudio.microsoft.com/zh-hans/vs/ 目录 1、什么是调试&#xff1f; 2、debug和release 3、调试 3.1、环境 3.2、 快捷键 3.2.1、F10和F11 3.2.2、ctrlF5 3.2.3、F5与F9 3.2.3.1、条件断点 3.3、监视和内存观察 3.3.1、监视 3.3.2、内存 …

[集创赛海云捷讯杯]全国二等奖经验分享

[集创赛海云捷讯杯]全国二等奖经验分享 一.前言二.我们的作品三.小结 一.前言 笔者是研一在校生&#xff0c;从五月份开始和本科生一起卷集创赛&#xff0c;经历初赛&#xff0c;分赛区决赛&#xff0c;全国总决赛&#xff0c;认识了很多一起做比赛的朋友收获颇丰。今年海云杯…

RabbitMQ工作模式-发布订阅模式

Publish/Subscribe&#xff08;发布订阅模式&#xff09; 官方文档&#xff1a; https://www.rabbitmq.com/tutorials/tutorial-three-python.html 使用fanout类型类型的交换器&#xff0c;routingKey忽略。每个消费者定义生成一个队列关绑定到同一个Exchange&#xff0c;每个…

性能测试jmeter连接数据库jdbc(sql server举例)

一、下载第三方工具包驱动数据库 1. 因为JMeter本身没有提供链接数据库的功能&#xff0c;所以我们需要借助第三方的工具包来实现。 &#xff08;有这个jar包之后&#xff0c;jmeter可以发起jdbc请求&#xff0c;没有这个jar包&#xff0c;也有jdbc取样器&#xff0c;但不能发…

外观模式:简化复杂子系统的访问与使用

文章目录 1. 简介2. 外观模式的基本结构3. 外观模式的实现步骤4. 外观模式的应用与实例4.1 图形界面库的外观模式应用4.2 文件压缩与解压缩的外观模式应用4.3 订单处理系统的外观模式应用 5. 外观模式的优缺点5.1 优点5.2 缺点 6. 总结 1. 简介 外观模式是一种结构型设计模式&…

Linux服务器安装部署MongoDB数据库 – 【无公网IP远程连接】

文章目录 前言1.配置Mongodb源2.安装MongoDB数据库3.局域网连接测试4.安装cpolar内网穿透5.配置公网访问地址6.公网远程连接7.固定连接公网地址8.使用固定公网地址连接 前言 MongoDB是一个基于分布式文件存储的数据库。由 C 语言编写&#xff0c;旨在为 WEB 应用提供可扩展的高…

什么是OLAP

一、什么是OLAP OLAP&#xff08;On-line Analytical Processing&#xff0c;联机分析处理&#xff09;是在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合。可以比较下其与传统的OLTP&#xff08;On-line Transaction Processing&#xff0c;联机事务处理&…

Redisson分布式锁 原理源码 分析

# 基于setnx实现的分布式锁存在的问题&#xff1a; # 为了解决上面的问题&#xff0c;可以用Redisson # Redisson入门 # Redisson可重入锁原理 获取锁的Lua脚本&#xff1a; 释放锁的Lua脚本&#xff1a; # 锁重试原理分析 tryLock&#xff08;&#xff09;底层代码分析 tim…

什么是自动语音识别?

在人工智能发展和全球疫情的双重作用下&#xff0c;企业加强了与客户的线上沟通。企业越发依赖于虚拟助手、聊天机器人以及其他的语音技术&#xff0c;以实现与客户的高效互动。这几类人工智能&#xff0c;都是依赖于自动语音识别技术&#xff0c;简称为ASR。ASR涉及到将语音转…

LLM推理部署(一):LLM七种推理服务框架总结

自从ChatGPT发布以来&#xff0c;国内外的开源大模型如雨后春笋般成长&#xff0c;但是对于很多企业和个人从头训练预训练模型不太现实&#xff0c;即使微调开源大模型也捉襟见肘&#xff0c;那么直接部署这些开源大模型服务于企业业务将会有很大的前景&#xff0c;本文将介绍七…

Effective C++条款16——成对使用new和delete时要采取相同形式(资源管理)

以下动作有什么错? std::string* stringArray new std::string[100]; // ... delete stringArray;每件事看起来都井然有序。使用了new&#xff0c;也搭配了对应的 delete。但还是有某样东西完全错误:你的程序行为不明确&#xff08;未有定义&#xff09;。最低限度&#xff…

PHP竞赛管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP 竞赛管理系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 下载地址 https://download.csdn.net/download/qq_41221322/88244066 二、功能介绍 后…

C#_特性反射详解

特性是什么&#xff1f; 为程序元素额外添加声明信息的一种方式。 字面理解&#xff1a;相当于把额外信息写在干胶标签上&#xff0c;然后将其贴在程序集上。 反射是什么&#xff1f; 反射是一种能力&#xff0c;运行时获取程序集中的元数据。 字面理解&#xff1a;程序运行…

一键实现 Oracle 数据整库同步至 Apache Doris

在实时数据仓库建设或迁移的过程中&#xff0c;用户必须考虑如何高效便捷将关系数据库数据同步到实时数仓中来&#xff0c;Apache Doris 用户也面临这样的挑战。而对于从 Oracle 到 Doris 的数据同步&#xff0c;通常会用到以下两种常见的同步方式&#xff1a; OGG/XStream/Lo…

设计模式-桥接模式

核心思想 适配器模式类似&#xff0c;以后也会遇到意思接近一样的设计模式。在开发中一般多个模式混用&#xff0c;且根据不同的场景进行搭配&#xff0c;桥接模式也是结构型模式将抽象的部分和实现的部分分离&#xff0c;使它们都可以独立的变化。通俗来说&#xff0c;就是通…

Linux特殊指令

目录 1.dd命令 2.mkfs格式化 3.df命令 4.mount实现硬盘的挂载 5.unshare 1.dd命令 dd命令可以用来读取转换并输出数据。 示例一&#xff1a; if表示infile&#xff0c;of表示outfile。这里的/dev/zero是一个特殊文件&#xff0c;会不断产生空白数据。 bs表示复制一块的大…