《Spring Cloud Oauth2微服务授权》
文章平均质量分 94
Spring Security Oauth2 微服务授权
墨家巨子@俏如来
EasyJF开源团队成员,10 年Java开发及项目管理经验,在企业中承担项目经理、架构师等职位,喜欢研究技术,执着于对技术底层的探索及源码的剖析;喜欢写文章,享有阿里云专家博主、CSDN博客专家、Java领域优质创作者、华为云开发者联盟成员/技术博主(CSDN搜索-墨家巨子@俏如来)代表作《SpringCloud入门到精通》,《SpringCloud源码深度剖析》,《SpringBoot入门到精通》,《Spring源码深度剖析》等等
展开
-
十七.SpringCloud+Security+Oauth2实现微服务授权 -非对称加密生成JWT令牌
仅做学习使用,老鸟飞过,欢迎交流前言在之前的微服务授权方案《SpringCloud+Security+Oauth2实现微服务授权 - 授权服务配置》中我们使用的是Oauth+JWT方式完成,今天介绍一下使用非对称加密方式RSA来生成JWT令牌一.对称和非对称加密1.对称加密早期的加密方式都是使用对称加密即:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。加密算法是公开的,使用一个秘钥加密,必须使用相同的秘钥才能解密,通过秘钥来保证原创 2020-11-30 13:47:53 · 3174 阅读 · 0 评论 -
十六.SpringCloud+SpringSession实现微服务单点登录
Session不共享问题对于登录而言,通常情况下我们喜欢把登录信息存储到服务器的Session中,这种存储方式在单体应用中没有问题,但是在分布式/集群环境中会存在Session丢失问题,如下图:解决方案也有很多,在《微服务认证授权方案》一文中有相关的解决方案分析,这里不在重复赘述,本文章的目的是使用SpringSession+Redis来解决分布式系统中的单点登问题SpringSession的认证方案这种认证方案还是使用的是session,只不过是将Session统一存储到Redis中实现sess原创 2020-11-22 17:25:24 · 2650 阅读 · 1 评论 -
十五.SpringCloud+Security+Oauth2实现微服务授权 -前端登录实战
前言原创 2020-10-29 13:31:06 · 1629 阅读 · 2 评论 -
十四.SpringCloud+Security+Oauth2实现微服务授权 - 网关统一鉴权
前言根据之前文章的学习,我们已经可以实现微服务的授权了,目前我们采用的方案是在每个资源服务器校验Token然后完成资源的授权,业界还有一种比较常用的方案就是在网关层统一校验Token,下面我们来探讨一下1.统一鉴权方案在“微服务授权方案”中我们就已经探讨了,在微服务中有两种授权方案,一者是不使用网关,即鉴权工作交给资源服务器,二者是使用网关统一鉴权,如果不使用网关那么我们就只需要在每个资源服务做同样的资源服务配置即可,如果要使用网关,那么就需要把资源服务的配置搬到网关中实现统一鉴权(网关充当了资源服原创 2020-10-28 23:34:11 · 4105 阅读 · 0 评论 -
十三.SpringCloud+Security+Oauth2实现微服务授权 - 服务之间授权
前言服务之间授权指的是A服务访问B服务,如果B服务需要权限校验,提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarning原创 2020-10-28 17:56:39 · 2252 阅读 · 1 评论 -
十二.SpringCloud+Security+Oauth2实现微服务授权 - 资源服务器配置
前言Oauth2分为授权服务和资源服务,上一章节我们对AuthServer做了Oauth2的授权服务配置,这一章节我们来配置资源服务器Resource1Server1.概述Oauth2资源服务配置当客户端(web端,mobile移动端)带着Token向资源服务器发起请求获取资源,资源服务器需要对请求中的Token进行校验以及对资源进行授权,如果Token校验和授权都通过即可返回相应的数据给客户端,那么,资源服务器配什么?Oauth2提供的资源服务配置类为ResourceServerConfigur原创 2020-10-24 23:44:38 · 1873 阅读 · 0 评论 -
十.SpringCloud+Security+Oauth2实现微服务授权-环境准备
1.概述1.1.SpringSecurity-Oauth2介绍SpingSecurityOauth2实现了Oatuh2,SpingSecurityOauth2分为两个大块,一者为认证授权(Authorization Server)服务和资源服务(Resource server),认证授权服务一般负责执行认证逻辑(登录)和加载用户的权限(给用户授权),以及认证成功后的令牌颁发 ,而资源服务器一般指的是我们系统中的微服务(被访问的微服务),在资源服务器需要对用户的令牌(认证成功与否),以及授权(是不是有访问原创 2020-10-24 16:46:17 · 2105 阅读 · 2 评论 -
十一.SpringCloud+Security+Oauth2实现微服务授权 - 授权服务配置
前言上一文章我们准备了微服务授权的环境,并对AuthServer实现了简单的认证流程,这里是接上一篇文章继续对AuthServer认证服务做Oauth2配置1.概述Oauth2授权服务配置SpringSecurityOauth2提供了AuthorizationServerConfigurerAdapter适配器类来作为认证授权服务的配置,其中有三个方法源码如下:public class AuthorizationServerConfigurerAdapter { //客户端详情:配置客户原创 2020-10-24 16:45:44 · 2476 阅读 · 6 评论 -
九.SpringCloud+Security+Oauth2实现微服务授权 - Oauth2&JWT的认识
1.Oauth2概述OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的,oAuth是Open Authorization的简写,目前的版本是2.0版。2.Oauth2的认证流程这里以Oauth2授权码模式为例这里以云打印案例举例,张三想要通过云打印平台打印QQ空间的照片,传统的流程是张三把QQ账号交给原创 2020-10-24 15:16:14 · 2409 阅读 · 0 评论 -
四.SpringSecurity基础-自定义登录流程
自定义登录在SpringSecurity的整个认证流程中,除了UserDetailsService需要我们自己定义外,其他的的组件都可以使用默认的,因为UserDetailsService是SpringSecurity获取数据库中的认证信息的媒介,而如何才能从数据库中获取认证信息只有我们才知道。在入门案例中我们使用的是InMemoryUserDetailsManager 基于内存的UserDetailsService方案,接下来我们需要把基于内存的方案修改为基于数据库的方案。1.定义密码编码器在我们的原创 2020-10-24 08:06:20 · 2003 阅读 · 3 评论 -
八.SpringCloud+Security+Oauth2实现微服务授权 - 常见的微服务授权方案
系列文章目录一.SpringSecurity基础-认证和授权概述二.SpringSecurity基础-简单登录实现三.SpringSecurity基础-认证原理&改造登录流程四.SpringSecurity基础-授权流程五.SpringSecurity基础-认证授权结果处理六.SpringSecurity基础-记住我功能实现前言前面我们讨论的是SpringSecurity基础部分内容,接下来我们来探讨一下SpringCloud 集成 SpringSecurity和Oauth实现微原创 2020-09-25 00:24:00 · 6023 阅读 · 1 评论 -
七.SpringSecurity基础-记住我功能实现
1.理解记住我1.1.什么是记住我Remember me(记住我)记住我,当用户发起登录勾选了记住我,在一定的时间内再次访问该网站会默认登录成功,即使浏览器退出重新打开也是如此,这个功能需要借助浏览器的cookie实现,具体流程如下1.2.记住我核心流程在SpringSecurity中提供RememberMeAuthenticationFilter过滤器来实现记住我功能,其核心流程如下:认证成功UsernamePasswordAuthenticationFilter会调用RememberMeS原创 2020-08-28 13:12:13 · 1093 阅读 · 0 评论 -
六.SpringSecurity基础-认证授权结果处理
1.认证结果处理1.1.认证成功处理在传统的应用中,认证成功后页面需要跳转到认证成功页面或者跳转到个人中心页,但是在前后端分离的项目通常是使用Ajax请求完成认证,这时候我们需要返回一个JSON结果告知前端认证结果,然后前端自行跳转页面。要做到上述功能,我们需要自定义认证成功处理器实现AuthenticationSuccessHandler接口复写 onAuthenticationSuccess方法,该方法其中一个参数是Authentication ,他里面封装了认证信息,用户信息UserDetail原创 2020-08-27 22:14:19 · 1506 阅读 · 0 评论 -
五.SpringSecurity基础-授权流程
1.授权流程分析授权一定是在认证通过之后,授权流程是通过FilterSecurityInterceptor拦截器来完成,FilterSecurityInterceptor通过调用SecurityMetadataSource来获取当前访问的资源所需要的权限,然后通过调用AccessDecisionManager投票决定当前用户是否有权限访问当前资源。授权流程如下1.1.RBAC传统授权流程:1.2.Security授权流程:在FilterSecurityInterceptor中会调用其父类Abs原创 2020-08-27 16:28:40 · 3092 阅读 · 1 评论 -
三.SpringSecurity基础-认证原理
1.认证流程原理1.1.认证流程SpringSecurity是基于Filter实现认证和授权,底层通过FilterChainProxy代理去调用各种Filter(Filter链),Filter通过调用AuthenticationManager完成认证 ,通过调用AccessDecisionManager完成授权。流程如下图:SpringSecurity中核心的过滤器链详细如下:SecurityContextPersistenceFilter这个filter是整个filter链的入口和出口,请原创 2020-08-27 16:00:51 · 4222 阅读 · 0 评论 -
二.SpringSecurity基础-简单登录实现
1.SpringSecurity介绍Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。2.SpringSecurity原创 2020-08-27 15:22:29 · 2382 阅读 · 2 评论 -
一.SpringSecurity基础-认证和授权概述
1.认证授权概述为了给学习SpringSecurity打下基础,我们来回顾一下传统的认证授权流程1.1.什么是认证认证是对主体/用户身份的确认,在我们的生活中随处可见认证场景,如:小区门禁卡,人脸识别,指纹识别等都是对用户身份的确认,在传统的应用中我们通常使用用户名/用户ID和密码来进行用户的身份确认,即登录,但登录的方式不仅限制于用户名/密码的方式,认证是我们应用的第一道安全门,所以对于整个系统的安全来说显得极其重要。1.2.什么是授权控制不同的用户访问不同的权限 ,用户认证成功后,就可以对某些原创 2020-08-27 15:16:11 · 2875 阅读 · 0 评论