SSO统一身份认证——搭建CAS Server中的服务管理 Web 应用程序(二十一)

SSO统一身份认证——搭建CAS Server中的服务管理 Web 应用程序(二十一)

背景

单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是目前比较流行的。

单点登录的使用场景有很多,C/S、B/S架构的系统均可使用,通常是支持快速配置使用。

业内目前实现SSO的方式有很多种,在ToC场景下互联网公司通常使用的是OAuth2协议,而ToB场景下大家通常是囊括百家,既支持OAuth2又支持CAS,还滴支持LDAP。其造成的原因主要是因为在ToB场景下需要对接SSO的系统通常仅支持某个协议,而这类系统又不是同一个协议导致。

而我当前境况下就是既有ToC场景又有ToB场景,在该种情况下,我开始对其业内的各种协议进行整合集成,这一系列文章将对其业内各个协议从基础到深入、从搭建到二次开发进行记录,同时将其整理出来分享给大家。

简介

Web 应用程序不再是 CAS 服务器的一部分,而是一个独立的 Spring Boot Web 应用程序,附带一个嵌入式 Apache Tomcat 容器。

管理 Web 应用程序纯粹是一个管理界面,可以部署在与 CAS 完全不同的环境中。它允许 CAS 管理员和应用程序所有者委派访问权限,以便他们可以管理和修改与其应用程序关联的策略。CAS 服务器本身的运行能力与管理 Web 应用程序的部署状态没有任何关系;您可以决定在任何给定时间将应用程序脱机进行维护或将其从您的部署方案中完全删除。> 同步配置

您必须记住,两个应用程序(CAS 服务器和管理 web 应用程序)共享相同的 CAS 服务服务注册配置。

阅读更多

知识分享之Ubuntu——修改Ubuntu源

知识分享之Ubuntu——修改Ubuntu源

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

全文使用环境:

  • 操作系统:Ubuntu 20.04.3
  • 硬件:Vmware虚拟机 4核 8G内存 200G存储

正文

在我们进行使用Ubuntu系统时经常需要安装各种各样的软件,而系统默认安装完成后,其所使用的源是官方地址下的默认源,这个源在国内有时并不是很稳定,因此我们就需要进行修改为国内的一些常见源。

国内比较常见的源例如:

阿里云源:http://mirrors.aliyun.com/ubuntu/dists/

网易源:http://mirrors.163.com/ubuntu/

阅读更多

知识分享之Ubuntu——修改DNS

知识分享之Ubuntu——修改DNS

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

全文使用环境:

  • 操作系统:Ubuntu
  • 硬件:Vmware虚拟机 4核 8G内存 200G存储

正文

日常我们对于网络进行修改后,有时会对其进行设置DNS,但日常使用时会遇到一个奇怪的问题,当设置了IP和DNS后,Ubuntu 20.04版本在每次重启后DNS总是被使用默认的DNS,导致访问外网总是失败。于是我对于这个大坑进行了一番研究(网上各种找找找)找到了如下一些方式,进行整理下来分享给大家,有效避坑。

1、停掉自带的dns管理服务

1
sudo systemctl disable --now systemd-resolved

2、删除dns配置文件

阅读更多

个人博客建设——Hexo常用命令汇总

背景

我的CN華少博客建设也有一段时间了,这段时间想去更新一下文章,突然发现原来的源码被我不知道弄到哪里去了,于是乎我又准备重新建一个项目,并在其基础上更换一套新的模板,并与Typore中的.md文件进行使用尝试,近期这几篇可能就是这个系列来进行了。
另之前开设的SSO统一身份认证近期没有再进行更新,后续会对其进行补充,请大家持续关注。

正文

本篇是对于Hexo日常使用的命令进行汇总,便于查阅使用。

命令 简写 描述
npm install hexo -g 初次建站
npm update hexo -g 升级hexo
hexo init 初始化
npm install hexo-xxxx –save 安装插件
npm uninstall hexo-xxx –save 卸载插件
hexo n “文章名” 新建文章(日常在source/_drafts目录下创建文件是草稿,source/_posts目录下创建文件是发布的文章),题包含空格时必须使用引号
hexo clean 清除缓存
hexo generate hexo g 生成静态文件(public文件夹内容生成)
hexo deploy hexo d 部署
hexo d -g 生成静态文件并部署
hexo server hexo s 预览,启动服务器
hexo s -p 端口号 重置端口号
hexo s -l 日志
hexo s -i IP地址 自定义IP
hexo s -s 使用静态文件启动

由于我使用的是Typora进行编辑日常文件,使用Markdown语法进行编写文章内容,因此hexo的其他命令使用场景并不多,如后续有其他的常用的命令再进行补充。

文章参考hexo官方文档

本文声明:

88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

阅读更多

Web中间件——Tomcat与Jetty的对比

简述

日常我们在开发Web程序时常常会使用到Web中间件,其比较常用的中间件中就包含了Tomcat和Jetty,本篇文章,我们对其进行简单的描述一下,看其都可以实现什么。

正文

Jetty:
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。

Tomcat
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

本文声明:

image
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

常见问题之Java——Thymeleaf常用语法

常见问题之Java——Thymeleaf常用语法

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:windows10
  • JDK:openjdk11

    内容

下面是日常比较常用的一些标签整理之后的表格,分享给大家,后续对于一些复杂标签会专门的进行实际案例讲解,欢迎大家持续关注

语法 描述

添加文本
“${name}” “‘你好’+${name}” 页面文本与返回值拼接
th:if=”${sex==1}” th:text=”成立的内容” 如果返回值sex是1则成立内容显示
th:unless 与if结果不成立则。。。
th:each=”user,stat:${userList}” 循环,一般用于列表时进行,user是每个实体,stat是当前状态,后续详解,例如stat.index stat.count
th:href=”@{…}” 超链接地址
th:src 引用文件
th:style 样式
本文声明:

88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

常见问题之Java——Illegalunsupported Escape Sequence Near Index 11

常见问题之Java——String、StringBuffer和StringBuilder哪个效率更高

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:windows10
  • JDK:openjdk11

    内容

    首先我们需要知道String在Java中是一个引用类型,其使用时是以对象的形式存在,而很多小伙伴可能不知道,String对象在进行重新赋值或值发生改变时都是生成一个新的对象,即栈中存储的String对象标记符(可理解为指针)指向的是一个堆中的内存地址,该地址下存储了该对象的值,这也是为什么String是引用类型的原因,而这时String对象的值进行改变时,并不是我们想的其会修改堆中的值,而是在堆中新开一个内存,将新的值存入其中,栈中存储的堆地址这时更换为新的值所在的堆内存地址,这样才算完成一次变更值。

假设String a = “test”+”001” 这时其在堆内存中的占用就是三个部分:
“test”、”001”、”test001”

而a对象的栈内存存储的是”test001”的堆内存地址,这时”test”和”001”只能等垃圾回收机制进行自动化回收才可以释放。

而StringBuffer和StringBuilder这两个的最大区别在于第一个是线程安全的,第二个是线程不安全的,同样的StringBuffer在确保线程安全的过程中,牺牲了一定的性能,因此StringBuilder速度是最快的。而两者与String相比其修改过程中是直接作用于指定的堆内存中,通常不会再进行开辟新的堆内存,因此相比String效率更高。
因此我们可以得出如下结论:
String < StringBuffer < StringBuilder

这时可能有的小伙伴们会想我就想完成一个String a = “test”、”001” 还需要进行创建一个StringBuilder或StringBuffer 吗?

这就要进行考虑了,如果该逻辑所在的函数(方法)中调用频次特别特别低,这时开辟的内存有足够的自动回收时间,那用哪种其实效率并不明显。

阅读更多

Mariadb数据库——设置Mariadb大小写不敏感

Mariadb数据库——设置Mariadb大小写不敏感

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:Ubuntu
  • 数据库:Mariadb

    内容

    一、忽略大小写配置

    在我们日常进行使用Mariadb时通常在程序里面会忽略掉大小写的区别,而Maradb默认安装完成后是区分大小写的,这时如果我们进行创建了数据库与表结构,那么在使用时就需要和其名称、大小写一致方可进行操作。而修改这类配置的操作也很简单,只需要打开/etc/my.cnf中增加如下配置即可:
    1
    2
    [mysqld]
    lower_case_table_names = 1
    保存文件后重启一下服务,这样我们就可以忽略掉大小写。
    1
    sudo service mariadb restart

注:如果在修改之前我们已经创建了数据库,这时可能就需要提前将其数据库备份出来,待修改完成后再进行重新创建和导入之前的数据,因为其在默认0时,mariadb的处理机制会严格按照大小写进行进行创建和记录相关,而修改该参数后,所有操作指令都会被转换为小写状态,即我们大写的SQL也会被转换为小写来进行响应,这时就会出现问题,之前大小写创建的数据库将不会被找到。

二、参数值作用

另外该参数具有以下三种值,大家可以根据自己的需要进行修改使用:

  • lower_case_table_names = 0 存储使用传输过来的大小写格式,读取时依旧严格遵循
  • lower_case_table_names = 1 存储使用自动转换后的小写格式,读取比较时不区分大小写。
  • lower_case_table_names = 2 存储使用给定的大小写,读取比较时自动转换为小写。

备注:该参数的修改都需要进行重启数据库后才能生效。

阅读更多

Docker容器——重命名镜像的TAG

Docker容器——重命名镜像的TAG

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:Ubuntu

    内容

    1、查看镜像的ID号
    1
    docker images
    2、使用docker tag命令进行修改名称
    docker tag 镜像id 镜像命名:标签
    1
    docker tag e3sc2c4f6s test:v1.0.0
本文声明:

88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

常见问题之Java——AOP中常用的切入点表达式

常见问题之Java——AOP中常用的切入点表达式

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:windows10
  • JDK:openjdk11
  • 开发工具:IDEA 教育版
  • 框架:SpringBoot
  • 包管理:Gradle

    内容

    上一篇,我们提到了AOP的基础概念(知识分享之Java——AOP中执行顺序),这一篇我们整理一下常用的切入点表达式。

关键词:execution 用于匹配子表达式
格式 @注解(“execution([可见性]返回类型[声明类型].方法名(参数)[异常]”)

这其中常用注解包括以下几种:

@Aspect、@Component、@Pointcut、@Before、@AfterReturning

而表达式的格式构成主要有以下这些:

    • 这个符号表示匹配所有的。
    • 这个表示类和子类
  • … 这个表示多个包,比如core包下面的所有:com.demo.core…
  • && 这个表示并且
  • || 这个表示或者
  • ! 这个表示非
    例如常见的表达式有:
    execution(* com.demo.core.controller.indexController.index(..))
    表示com.demo.core.controller包下的indexController类中的index方法生效,*表示里面不管任何返回值的均包括。
阅读更多