自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 资源 (1)
  • 收藏
  • 关注

原创 Shiro--Realm及相关对象(六)

6.1 Realm【2.5 Realm】及【3.5 Authorizer】部分都已经详细介绍过Realm了,接下来再来看一下一般真实环境下的Realm如何实现。1、定义实体及关系即用户-角色之间是多对多关系,角色-权限之间是多对多关系;且用户和权限之间通过角色建立关系;在系统中验证时通过权限验证,角色只是权限集合,即所谓的显示角色;其实权限应该对应到资源(如菜单、URL、页面按钮、Java方法等)中,即应该将权限字符串存储到资源实体中,但是目前为了简单化,直接提取一个权限表,【综合示例】部分

2020-07-31 23:58:58 137

原创 Shiro--编码/加密(五)

在涉及到密码存储问题上,应该加密/生成密码摘要存储,而不是存储明文密码。比如之前的600w csdn账号泄露对用户可能造成很大损失,因此应加密/生成不可逆的摘要方式存储。5.1 编码/解码Shiro提供了base64和16进制字符串编码/解码的API支持,方便一些编码解码操作。Shiro内部的一些数据的存储/表示都使用了base64和16进制字符串。String str = "hello";String base64Encoded = Base64.encodeToString(str.g.

2020-07-30 22:50:48 266

原创 Shiro--INI配置(四)

之前章节我们已经接触过一些INI配置规则了,如果大家使用过如Spring之类的IoC/DI容器的话,Shiro提供的INI配置也是非常类似的,即可以理解为是一个IoC/DI容器,但是区别在于它从一个根对象securityManager开始。4.1 根对象SecurityManager从之前的Shiro架构图可以看出,Shiro是从根对象SecurityManager进行身份验证和授权的;也就是所有操作都是自它开始的,这个对象是线程安全且真个应用只需要一个即可,因此Shiro提供了SecurityUt

2020-07-30 22:27:09 109

原创 Shiro--授权(三)

授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等)。在授权中需了解的几个关键对象:主体(Subject)、资源(Resource)、权限(Permission)、角色(Role)。主体主体,即访问应用的用户,在Shiro中使用Subject代表该用户。用户只有授权后才允许访问相应的资源。资源在应用中用户可以访问的任何东西,比如访问JSP页面、查看/编辑某些数据、访问某个业务方法、打印文本等等都是资源。用户只要授权后才能访问。权限安全策略中的原子授权

2020-07-30 07:19:59 166

原创 cas单点登录-服务管理cas-management部署(二十二)

本来这篇内容应该放到动态添加service之后讲的,决定放到最后,cas-management可以在线配置添加网站登录到cas服务器上,废话不说了,直接进入部署过程。参考官网https://apereo.github.io/cas/5.3.x/installation/Installing-ServicesMgmt-Webapp.html搭建过程pom.xmlpom是直接下载zip然后编译拷贝过来的。<?xml version="1.0" encoding="UTF-8"?&

2020-07-30 06:45:15 1852 3

原创 cas单点登录-分布式部署(二十一)

随着用户量的上升,单机的cas服务肯定是不行的,因此需要分布式来部署多台,要满足分布式部署,需要满足下面两个条件:1、采用统一的ticket存取策略,所有ticket的操作都从中央缓存redis中存取。2、采用session共享,tomcat的session的存取都从中央缓存redis中存取。(这一步可省略,我是将验证码放到了session中所以做session共享)第一步:redis存储ticket参考文档https://apereo.github.io/cas/5.3.x/install

2020-07-30 06:45:05 556

原创 cas单点登录-Cas Server开启Oauth2.0协议(二十)

学习Cas这么久了,一直在按照CAS自身的协议接入,Cas的强大在于有官方的插件,可以支持其他的协议,当然了,现在流行的Oauth2.0协议肯定是支持了,下面开始集成Oauth。参考博客https://apereo.github.io/cas/5.3.x/installation/OAuth-OpenId-Authentication.htmlhttps://apereo.github.io/cas/5.3.x/installation/Configuration-Properties.html#o

2020-07-30 06:44:55 1894

原创 cas单点登录-自定义返回信息给客户端(十九)

之前测试的时候,我们可以发现单点登录,默认是只返回登录的用户名,不会返回用户其他的信息,假如我们还需要用户的id,手机号之类的信息怎么办? 可以修改cas服务端,返回更多的信息给客户端。参考官网https://apereo.github.io/cas/development/integration/Attribute-Release-Policies.html1.首先要在注册Service的json中配置返回信息的规则比如:客户端A需要姓名和身份证号,客户端B需要昵称和头像这些公开信息,具体

2020-07-30 06:44:43 1186

原创 cas单点登录-自定义错误信息提示(十八)

上一篇,我们在登录页面添加了验证码,但是在测试的时候发现,无论是验证码错误,还是密码错误,都是提示的 认证信息无效。我们需要更改错误信息提示来增加用户体验。cas自定义错误信息需要以下几步:1.创建 一个异常类继承javax.security.auth.login.AccountExpiredException2.配置异常到application.properties中3.在messages_zh_CN.properties 配置文件中,配置异常弹出的消息使用maven的Overlay编译好之后,

2020-07-30 06:44:32 8110 2

原创 cas单点登录-重写Credential自定义表单信息(添加验证码)(十七)

本篇主要的知识点是为了讲解重写Credential来实现自定义表单信息,我们使用sso的时候往往登录不只是需要用户名密码,有时候可能还需要验证码,下面就要讲解如何重写Credential添加验证码。添加别的值也是一样的操作。验证码是有效防止暴力破解的一种手段,常用做法是在服务端产生一串随机字符串与当前用户会话关联(我们通常说的放入 Session),然后向终端用户展现一张经过“扰乱”的图片,只有当用户输入的内容与服务端产生的内容相同时才允许进行下一步操作.参考博客https://blog.csdn

2020-07-30 06:44:19 1752 1

原创 cas单点登录-配置记住我(十六)

正常情况下,在application.properties中配置开启记住我,在登录页面是会显示记住我的文本框,如下图:但是由于我们使用的是自定义登录页面,配置了记住我之后,页面上也没有显示该复选框,默认一直没有记住我,所以想要开启记住我,还需要将该文本框的代码粘贴到登录页。具体操作1.application.properties添加如下配置#记住我cas.ticket.tgt.rememberMe.enabled=truecas.ticket.tgt.rememberMe.timeToK

2020-07-30 06:44:06 612 1

原创 cas单点登录-自定义登出确认页面(十五)

上一篇我们自定义登录页面,登录页面和其他的页面更改方式有点不同,所以在上一篇中单独介绍过了,关于登出确认页面,也在之前的博客中有讲过,关于自定义登出确认页面,可以自己定义为自己的样式。关于页面的介绍这是最后一篇介绍,之后的都是同一个套路。具体操作首先找到casConfirmLogoutView.htmlcasConfirmLogoutView.html在templates的根目录下面,拷贝该页面,并粘贴到自己项目的相同路径下面,如下图:casConfirmLogoutView.html

2020-07-29 01:02:27 552

原创 cas单点登录-自定义登录页面(十四)

上有广告或者公司的logo等,下面开始进行自定义登录页面,查看官方文档,发现有动态主题和静态主题,下面只介绍静态主题模式。参考文档https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties.html#themeshttps://apereo.github.io/cas/5.3.x/installation/User-Interface-Customization-Themes.html主题主题意味着风格不一

2020-07-29 01:00:11 1095

原创 cas单点登录-动态添加services(十三)

前面我们整合客户端的时候,需要在cas服务端注册,使用的是json文件的方式,更简单的一点,直接配置为只要是http或者https的请求,都表示注册,那也就没有本篇的动态添加services了,哈哈 不过,这也是一个不错的方法。假如,我们以域名配置的,比如:http://app1.cas.com注册,那么又有新的模块为http://app2.cas.com我们总不能每次修改配置,重启cas服务吧。这很不现实,官网给出了如下的解决方式,将数据库来存储这些数据。具体参考官网https://ape...

2020-07-29 00:51:45 2187

原创 cas单点登录-rest认证(十二)

我们之前在cas服务端整合了shiro,在shirorealm中通过查询数据库获取用户信息和角色等信息,如果都是内部服务,将从数据库中获取信息改为通过调用接口获取信息就可以了,这也是一种方式,这里是演示一下官网的配置。什么是Rest认证?cas服务端通过调用其他服务接口,将用户名和密码传过去进行认证。这就是rest认证。什么情况下需要用到Rest认证?在不允许cas服务直接访问账号数据库的时候,这个时候就需要用到Rest认证。具体参考官网https://apereo.github.i

2020-07-29 00:42:56 1795

原创 cas单点登录-单点登出(十一)

既然有单点登录,肯定就要有登出,之前的整合都是只针对了登录,对登出并没有关注,今天我们就来讲讲登出。关于单点登出原理,参考博客:https://blog.csdn.net/u010588262/article/details/80201983https://blog.csdn.net/gdsgdh308227363/article/details/80446168参数说明参考官网地址https://apereo.github.io/cas/5.3.x/installation/Configu

2020-07-29 00:39:32 941 2

原创 cas单点登录-自定义鉴权路径(十)

客户端整合cas之后,无论我们访问什么地址,只要没有发现票据,都会跳转到cas服务端去进行登录。有时候我们有这样的需求,用户不登录也可以访问某些网页,这个时候就需要用到AuthenticationFilter的忽略地址功能。为了方便测试,我用一张图片来测试。如果只是简单的忽略地址,那很简单只要使用AuthenticationFilter的ignorePattern参数,具体操作如下:传统web项目配置方式1.配置资源映射我的图片放在WEB-INF/images下,默认是无法直接访问的,所以在s

2020-07-29 00:37:20 1765

原创 cas单点登录-编写自己的cas-starter(九)

前言写这篇文章的原因是在springBoot整合cas的过程中,我使用了一个别人写好的starter ,但是在整合单点登出的时候,发现多个客户端无法实现单点登出。经过查看源码,发现在这个starter中没有配置登出的filter。如果写成基于javaBean的配置也就一个类就能搞定,为了能学习一下如何实现一个 springboot的starter 所以来写一个 cas-client-spring-boot-starter。使用SpringBoot可以快速开发基于Spring框架的项目,SpringBo

2020-07-29 00:31:27 435

原创 cas单点登录-集成客户端-springboot方式(八)

之前整合了客户端的demo,也和spring整合了,现在的很多项目,都已经开始使用springboot了,spring传统方式是配置在web.xml中,Springboot和cas集成开发,主要也就是配置了四个过滤器,和一个监听器到Springboot中,其实和传统的配置方式,没有太大的区别。只是将web.xml配置都通过代码的配置改为基于javabean的配置。本次整合使用别人写好的一个starter。别人写好的第三方的starter,大家可以看一下源码,很简单,抽空我会写一篇 sprigboot自己实现

2020-07-29 00:23:56 402

原创 cas单点登录-集成客户端-传统spring方式(七)

上一篇博客,我们已经与客户端集成了,也实现了单点登录,一个系统登录之后,另一个系统无需再次登录,客户端是从官网下载的例子,一般我们的项目都是与spring集成的,那么本篇来整合spring,改造之前从官网下载的客户端。为了后面整合别的东西方便,这里直接将mybatis和springmvc整合进来。整合之后目录如下:整合了ssm,并且写了一个添加用户的功能,这些代码就不上了,看源码吧,只记录下面这些配置。整合过程1.客户端导入证书网上说必须保证客户端证书和服务端证书是同一个证书,不然就会

2020-07-29 00:19:19 275

原创 cas单点登录-集成客户端(六)

之前在服务端整合了数据库,也整合了shiro,我们一直是在服务端玩,登录跳转到登录成功页面,没啥意思,今天我们来将服务端和 客户端整合,使不同的客户端使用cas登录。cas服务端还是基于之前的整合shiro版本。环境概述ip 域名 对应服务 127.0.0.1 server.cas.com CAS服务器 127.0.0.1 app1.cas.com CAS客户端1 127.0.0.1 app2.cas.com CAS客户端2 配置域名

2020-07-29 00:14:04 564

原创 cas单点登录-服务端集成shiro权限认证(五)

所谓单点登录(SSO),只当企业用户同时访问多个不同(类型的)应用时,他们只需要提供自身的用户凭证信息(比如用户名/密码)一次,当用户在不同的应用间切换时,他们不用再重复地输入自身的用户凭证了。我的设计思路是SSO只做认证中心,各应用的授权在各自的服务做,比如 查看订单权限, 这个权限,它可能仅仅只是订单系统这个应用的权限。因此,授权应该在客户端做,本篇只是简单的介绍cas服务端与shiro 的集成, 只验证是否拥有角色,有角色就可以登录,没角色不可以登录。这里有两种方式第一种:一种是官网文档方式,

2020-07-28 23:59:16 1768

原创 cas单点登录-自定义登录验证(四)

我们在使用SSO单点登录的时候不只是验证一下用户名和密码是否一致,有时候还需要验证一些别的校验,那么这一张讲一下如何自定义验证器。自定义验证很重要,因为我们后续的很多功能,都是基于自定义验证。CAS服务器的org.apereo.cas.authentication.AuthenticationManager负责基于提供的凭证信息进行用户认证。与Spring Security很相似,实际的认证委托给了一个或多个实现了org.apereo.cas.authentication.AuthenticationHa

2020-07-28 23:57:03 2408 1

原创 cas单点登录-自定义密码认证(三)

参考官网https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties-Common.html#password-encodingCAS在身份验证处理,基本都是基于Spring Security对密码编码,如果您计划设计自己的密码编码器或编写脚本来执行此操作,则可能还需要确保覆盖在运行时具有以下模块:<dependency> <groupId>org.springframework

2020-07-28 23:53:56 1095

原创 Shiro--身份验证(二)

身份验证,即在应用中谁能证明他就是他本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明。在shiro中,用户需要提供principals(身份)和credentials(证明)给shiro,从而应用能验证用户身份:principals:身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。一个主体可以有多个principals,但只有一个Primary principals,一般是用户名/密码/手机号。credentials:证明/凭证.

2020-07-27 22:28:06 163

原创 Shiro--简介(一)

1.1 简介Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。本教程只介绍基本的Shiro使用,不会过多分析源码等,重在使用。Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaS..

2020-07-27 22:27:54 134

原创 OAuth 2.0 的形象图解

OAuth 2.0是目前最流行的授权机制,用来授权第三方应用,获取用户数据。这个标准比较抽象,使用了很多术语,初学者不容易理解。其实说起来并不复杂,下面我就通过一个简单的类比,帮助大家轻松理解,OAuth 2.0 到底是什么。一、快递员问题我住在一个大型的居民小区。小区有门禁系统。进入的时候需要输入密码。我经常网购和外卖,每天都有快递员来送货。我必须找到一个办法,让快递员通过门禁系统,进入小区。如果我把自己的密码,告诉快递员,他就拥有了与我同样的权限,这样好像不.

2020-07-27 22:27:32 187

原创 cas单点登录-JDBC认证(密码MD5和密码加盐)(二)

上一章搭建了单点登录的基本骨架,但是它的用户名和密码是写死的。显然,这样是不行的,用户名密码一般都存放在数据库中。本文将介绍如何让CAS支持MySQL存储用户名和密码。https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties.htmlhttps://apereo.github.io/cas/5.3.x/installation/Configuration-Properties-Common.html#database

2020-07-26 16:18:41 1001

原创 Hadoop —— linux单机环境搭建

一、前置条件Hadoop 的运行依赖 JDK,需要预先安装,安装步骤见:Linux 下 JDK 的安装二、配置免密登录Hadoop 组件之间需要基于 SSH 进行通讯。2.1 配置映射配置 ip 地址和主机名映射:vim /etc/hosts# 文件末尾增加192.168.43.202 hadoop0012.2 生成公私钥执行下面命令行生成公匙和私匙:ssh-keygen -t rsa2.3 授权进入~/.ssh目录下,查看生成的公匙和私匙,并将..

2020-07-26 02:56:52 407

原创 Elastic-Job-Cloud 源码分析 —— 高可用

1. 概述本文主要分享Elastic-Job-Cloud 高可用。一个高可用的 Elastic-Job-Cloud 组成如下图:Mesos Master 集群 Mesos Slave 集群 Zookeeper 集群 Elastic-Job-Cloud-Scheduler 集群 Elastic-Job-Cloud-Executor 集群本文重点分享 Elastic-Job-Cloud-Scheduler 如何实现高可用。Mesos Master / Mesos Slave / .

2020-07-26 01:14:53 207

原创 Elastic-Job-Cloud 源码分析 —— 作业失效转移

1. 概述本文主要分享Elastic-Job-Cloud 作业失效转移。对应到 Elastic-Job-Lite 源码解析文章为《Elastic-Job-Lite 作业作业失效转移》。你需要对《Elastic-Job-Cloud 源码分析 —— 作业调度(一)》有一定的了解。当作业任务在 Elastic-Job-Cloud-Executor 异常崩溃时,该任务在下次调度之前不会被重新执行。开启失效转移功能后,该作业任务会立即被 Elastic-Job-Cloud-Scheduler 重新调度,.

2020-07-26 01:14:42 648

原创 Elastic-Job-Cloud 源码分析 —— 本地运行模式

1. 概述本文主要分享Elastic-Job-Cloud 本地运行模式,对应《官方文档 —— 本地运行模式》。有什么用呢?引用官方解答:在开发 Elastic-Job-Cloud 作业时,开发人员可以脱离 Mesos 环境,在本地运行和调试作业。可以利用本地运行模式充分的调试业务功能以及单元测试,完成之后再部署至 Mesos 集群。本地运行作业无需安装 Mesos 环境。???? 是不是很赞 + 1024?!本文涉及到主体类的类图如下(打开大图):2. 配置Loc.

2020-07-26 01:14:30 403

原创 Elastic-Job-Cloud 源码分析 —— 作业调度(二)

1. 概述本文主要分享Elastic-Job-Cloud 云作业应用配置和云作业配置变更对作业调度的影响,作为《Elastic-Job-Cloud 源码分析 —— 作业调度(一)》的补充内容。所以需要你对作业调度已经有一定了解的基础上。2. 云作业操作我们可以使用运维平台或 Restful API 对云作业进行操作。前者是对后者的界面包装,如下图所示:2.1 注册云作业配置《Elastic-Job-Cloud 源码分析 —— 作业配置》「3.1.1 操作云作业配置」有详细解析。.

2020-07-26 01:14:19 205

原创 Elastic-Job-Cloud 源码分析 —— 作业调度(一)

1. 概述本文主要分享Elastic-Job-Cloud 调度主流程。对应到 Elastic-Job-Lite 源码解析文章如下:《Elastic-Job-Lite 源码分析 —— 作业初始化》 《Elastic-Job-Lite 源码分析 —— 作业执行》 《Elastic-Job-Lite 源码分析 —— 作业分片》如果你阅读过以下文章,有助于对本文的理解:《基于Mesos的当当作业云Elastic Job Cloud》 《由浅入深 | 如何优雅地写一个Mesos Framewor.

2020-07-26 01:13:55 538

原创 Elastic-Job-Cloud 源码分析 —— 作业配置

1. 概述本文主要分享Elastic-Job-Cloud 作业配置。如果你阅读过以下文章,有助于对本文的理解:《官方文档 —— RESTFUL API》 《Elastic-Job-Lite 源码分析 —— 作业配置》 《由浅入深 | 如何优雅地写一个Mesos Framework》本文涉及到主体类的类图如下(打开大图):黄色的类在elastic-job-common-core项目里,为 Elastic-Job-Lite、Elastic-Job-Cloud公用作业配置类。...

2020-07-26 01:13:08 283

原创 Elastic-Job-Lite 源码分析 —— 运维平台

1. 概述本文主要分享Elastic-Job-Lite 运维平台。内容对应《官方文档 —— 运维平台》。运维平台实现上比较易懂,就不特别啰嗦的解析,简略说下每个类的用途和 UI 上的关联。2. Maven模块 elastic-job-common-restfulRestfulServer 内嵌服务器,基于 Jetty 实现 GSONProvider 后端接口 JSON 格式化 RestfulExceptionMapper 异常映射 WwwAuthFilter 授权认证 Filter.

2020-07-26 01:12:55 297

原创 Elastic-Job-Lite 源码分析 —— 作业监控服务

1. 概述本文主要分享Elastic-Job-Lite 作业监控服务。内容对应《官方文档 —— DUMP作业运行信息》。使用Elastic-Job-Lite过程中可能会碰到一些分布式问题,导致作业运行不稳定。由于无法在生产环境调试,通过dump命令可以把作业内部相关信息dump出来,方便开发者debug分析; 另外为了不泄露隐私,已将相关信息中的ip地址以ip1, ip2…的形式过滤,可以在互联网上公开传输环境信息,便于进一步完善Elastic-Job。涉及到主要类的类图如下(打开大图..

2020-07-25 11:12:40 245 1

原创 Elastic-Job-Lite 源码分析 —— 自诊断修复

1. 概述本文主要分享Elastic-Job-Lite 自诊断修复。在分布式的场景下由于网络、时钟等原因,可能导致 Zookeeper 的数据与真实运行的作业产生不一致,这种不一致通过正向的校验无法完全避免。需要另外启动一个线程定时校验注册中心数据与真实作业状态的一致性,即维持 Elastic-Job 的最终一致性。涉及到主要类的类图如下(打开大图):在 Elastic-Job-lite 里,调解分布式作业不一致状态服务( ReconcileService ) 实现了自诊断修复...

2020-07-25 11:10:05 246

原创 Elastic-Job-Lite 源码分析 —— 作业监听器

1. 概述本文主要分享Elastic-Job-Lite 作业监听器。涉及到主要类的类图如下(打开大图):绿色监听器接口 ElasticJobListener,每台作业节点均执行。 粉色监听器接口 AbstractDistributeOnceElasticJobListener,分布式场景中仅单一节点执行。 蓝色类在com.dangdang.ddframe.job.lite.internal.guarantee里,保证分布式任务全部开始和结束状态。 AbstractDistrib...

2020-07-25 11:07:37 396

原创 Elastic-Job-Lite 源码分析 —— 作业事件追踪

1. 概述本文主要分享Elastic-Job-Lite 作业事件追踪。另外,Elastic-Job-Cloud 作业事件追踪和 Elastic-Job-Lite 基本类似,不单独开一篇文章,记录在该文章里。如果你对 Elastic-Job-Cloud 暂时不感兴趣,可以跳过相应部分。Elastic-Job 提供了事件追踪功能,可通过事件订阅的方式处理调度过程的重要事件,用于查询、统计和监控。Elastic-Job 目前订阅两种事件,基于关系型数据库记录事件。涉及到主要类的类图如下(打开...

2020-07-25 11:02:01 578

linux实用命令集.txt

自己在工作中的一些总结,包括了使用工具,Java技术,数据库安装

2019-07-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除