小鲍侃java
CSDN博客专家,华为签约作者,全网粉丝10w,阅读量100w+。现任企业架构师,主要分享和讲解毕设,java入门与晋级架构师的技巧与知识。
展开
-
五分钟带你玩转oauth2(二)还不了解微信登录原理?带你了解oauth2第三方登录
Oauth2OAuth 2.0 是目前最流行的授权机制,用来授权第三方应用,获取用户数据。OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的规范标准。与以往的授权方式不同之处是OAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 OAuth 是开放的安全的。业界提供了 OAuth 的多种实现,如 Java、PHP、Ruby 等各种语言开发包,大大节约了程序员的时间,因而OAuth是简易的原创 2020-11-30 11:08:15 · 1595 阅读 · 2 评论 -
五分钟带你玩转oauth2(一)引子
由于公司需要一个开源的重量级的安全框架所以楼主发了大量时间学习和实验spring security+oauth2 也可是说是取众家之长 大概花了1个月的时间原创 2021-06-01 16:38:18 · 927 阅读 · 6 评论 -
五分钟带你玩转oauth2(三)带你区分spring security与oauth2
有些同学在与spring boot整合的时候可能会迷糊这两个组件的作用与引用pom 这里介绍一下作用spring security 主要使用目的为认证与授权 (验证账号密码与是否有权限访问资源) 而spring security以session作为交互oauth2 主要目的为接入第三方登录 同时提供了以token作为访问权限 可以参考oauth2简介 如果使用oauth2就服务结构必须分为 认证中心,资源中心,第三方应用(建议分离开)整合spring boot依赖...原创 2021-02-08 14:32:58 · 7211 阅读 · 4 评论 -
五分钟带你玩转oauth2(四)认知oauth2表结构
spring 官网供了存储 OAuth2 相关信息的数据库表结构 以下是mysql表结构create table oauth_client_details ( client_id VARCHAR(128) PRIMARY KEY, resource_ids VARCHAR(128), client_secret VARCHAR(128), scope VARCHAR(128), authorized_grant_types VARCHAR(128), web_server_r.原创 2021-02-04 10:49:53 · 3374 阅读 · 16 评论 -
五分钟带你玩转oauth2(五)还不了解分布式?带你了解spring cloud ouath2分布式授权图
oauth2包括几个组件客户端:接入的第三方 其中包括 前后端分离项目的前台项目,app,其他公司后台想使用自己公司用户数据等 (参考微信登录)认证授权中心:认证,授权,提供token,refresh token资源服务器:内部后台的微服务模块网关:是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。...原创 2021-02-01 09:23:49 · 1664 阅读 · 5 评论 -
五分钟带你玩转oauth2(六)oauth2+spring security前后端调用接口介绍
端口号说明:6001:网关8001:业务服务端口注 401:没有携带token(需要跳转) 402:认证失败,无效或过期token(需要跳转) 403:权限不足 不能访问接口(将信息显示前天)登录所需接口1登录接口(因为没有指定认证后跳转的路径 此接口不能单独使用)http://localhost:6001/authentication/login请求方式post参数:username密码:password验证码:code2 获取cod...原创 2021-02-01 09:22:40 · 1412 阅读 · 4 评论 -
五分钟带你玩转oauth2(七)冒险分享涉密知识点,spring security+oauth2登录逻辑与流程
本文只提供验证码模式1.获取权限code (例如csdn等网站 点击微信登录时就是一个获取code的过程)地址:http://192.168.xx1.xx1:600/oauth/authorize?client_id=user-vue&response_type=code&redirect_uri=http://192.168.xx.xx:8080/excessive?redirectTo=http://192.168.xx.xx:8080/home (后面的参数解释可以参考前文)实.原创 2021-02-09 11:05:46 · 872 阅读 · 2 评论 -
五分钟带你玩转oauth2(八)企业实战spring cloud ouath2中的Eureka
老生常谈的配置 但是还是需要说明一下EurekaApplication@EnableEurekaServer指定为server端@EnableEurekaServer@SpringBootApplicationpublic class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args);.原创 2021-02-08 16:45:16 · 806 阅读 · 4 评论 -
五分钟带你玩转oauth2(九)企业实战spring cloud oauth2中的Zuul
网关有以下几个作用:统一入口:未全部为服务提供一个唯一的入口,网关起到外部和内部隔离的作用,保障了后台服务的安全性。 鉴权校验:识别每个请求的权限,拒绝不符合要求的请求。 动态路由:动态的将请求路由到不同的后端集群中。 减少客户端与服务端的耦合:服务可以独立发展,通过网关层来做映射。在oauth2网关除了以上作用 还有鉴权的作用 如果token无效 则直接返回GetwayApplication@EnableZuulProxy说明为zuul网关服务restTemplate配置开启服务.原创 2021-02-08 17:29:53 · 665 阅读 · 6 评论 -
五分钟带你玩转oauth2(十)企业实战spring security+oauth2的认证中心
认证中心功能主要包括:1.发放token 2.验证token 3.提供第三方登录 登出的页面SpringSecurityConfig与前文的配置相同 主要提供认证与授权功能@EnableWebSecuritypublic class SpringSecurityConfig extends WebSecurityConfigurerAdapt...原创 2021-02-08 16:22:03 · 1076 阅读 · 3 评论 -
五分钟带你玩转oauth2(十一)企业实战spring cloud ouath2中的资源服务器
资源服务器就是业务服务 如用户服务,订单服务等 第三方需要到资源服务器调用接口获取资源ResourceServerConfigResourceServerConfig是资源服务器的核心配置 用于验证token 与网关配置相似其中.antMatchers("/**").access("#oauth2.hasScope('user')") 需要oauth_client_details表的scope配合 意思是访问所有资源 需要客户端有scope需要有user@Configuration@原创 2021-02-09 09:41:30 · 2280 阅读 · 5 评论 -
五分钟带你玩转oauth2(十二)重写源码,定制oauth2+spring security的token
楼主这里有这样一个需求:因为同一个客户端在获取token时 判断token是否存在 如果存在 将重新使用这个token 领导需要楼主在每次登陆时都产生新的token 这里我们选择自定义TokenServicesAuthorizationServerConfig(去掉其他配置)oauth2认证中心的核心配置类为AuthorizationServerConfig1.重写TokenServices实现生成token的逻辑2.token是一系列字符加密生成的 通过tokenServices....原创 2021-02-08 15:57:01 · 2528 阅读 · 7 评论 -
五分钟带你玩转oauth2(十三)重写源码,定制spring security+oauth2的/oauth/token接口
在获取token时使用/oauth/token接口 但是想在返回token的同时也返回其他属性:如用户姓名 ,权限等 那么我们可以重写/oauth/token 接口OauthController以下配置不会更改接口地址和入参 只更改返回值@RestController@RequestMapping("/oauth")public class OauthController { @Autowired @Lazy private TokenStore tokenS.原创 2021-02-09 15:14:03 · 6689 阅读 · 19 评论 -
五分钟带你玩转oauth2(十四)重写源码,spring security+oauth2 实现token过期重定向原页面
楼主这里有个需求:当token过期后 重新获取token 并返回过期那页 这里主要依赖前端实现xx.xx为前端xx1.xx1为后端1.当前端在 xx.xx/user token失效2.原本获取http://192.168.xx1.xx1:6001/oauth/authorize?client_id=user-vue&response_type=code那么现在改成 http://192.168.xx1.xx1:6001/oauth/authorize?client_id=us..原创 2021-02-09 10:39:08 · 3097 阅读 · 4 评论 -
五分钟带你玩转oauth2(十五)重写源码,自定义RedisTokenStore进行token单点登录的续期
当涉及到token时面临了一个问题,就是token续期,在单点登录的环境中,登录用户因为可能访问第三方系统产生多个token,楼主的解决方式是判断同一个ip下,同一个用户,相同类型浏览器的token同时续1.复制spring security提供的RedisTokenStore2.修改readAuthentication方法,在验证token时会调用这个方法。public class CustomRedisTokenStore implements TokenStore { @A.原创 2021-02-03 09:12:42 · 3072 阅读 · 3 评论 -
五分钟带你玩转oauth2(十六)spring security+oauth2自定义授权页
在我们微信登录时或者qq登录时 都会有以下页面这个就是我们所说的授权页 但是你别无选择 必须同意才能继续操作而spring security + oauth2 也提供了授权页 如下图如图 比较难看 红色框里面的数据来自oauth_client_details表的scope字段配合以下配置使用自定义授权页面如果说你嫌弃这个授权页面太难看了 想要自己制作一个 可以通过以下配置AuthorizationServerConfig修改资源中心的核心配置类Autho...原创 2021-02-09 15:05:24 · 1575 阅读 · 6 评论 -
五分钟带你玩转oauth2(十七)企业级解决方案,oauth2单点登录全流程
原创 2021-02-03 15:49:08 · 1312 阅读 · 1 评论 -
五分钟带你玩转oauth2(十八)spring security+oauth2正常退出登录全流程解析
流程详细代码/logout1.vue前台点击退出登录,调用/logout接口,/logout接口使用thymeleaf跳转到logout.html页面@Controllerpublic class LogoutController { /** * 正常退出登录接口 * * @param clientId * @param accessToken * @return */ @GetMapping("/.原创 2021-02-09 15:48:21 · 4974 阅读 · 9 评论 -
五分钟带你玩转oauth2(十九)spring security+oauth2-token过期后退出登录全流程解析
代码详细expireLogout/logout/expirePage接口使用thymeleaf跳转到expire-logout.html页面@Controllerpublic class LogoutController { /** * 过期退出登录 * * @param clientId * @param accessToken * @return */ @GetMapping("/logout/expir..原创 2021-02-09 16:15:08 · 4463 阅读 · 12 评论 -
五分钟带你玩转oauth2(二十)spring security+oauth2通过EnableOAuth2Sso实现单点登录
代码@EnableOAuth2Sso // 开启单点登录功能@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter {}登出@Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() // 首页原创 2021-02-18 10:28:45 · 2477 阅读 · 3 评论 -
五分钟带你玩转oauth2(二十一)spring security+oauth2资源服务器开放swaager访问
资源服务器不像认证服务器可以直接配置 ,认证服务器只能配置每个接口权限http.sessionManagement() // SpringSecurity不会使用也不会创建HttpSession实例 .sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests() // swagger请求 .antMatche原创 2021-01-25 14:18:41 · 796 阅读 · 4 评论