Gateway + Security + OAuth 2.0 + JWT 实现统一的认证授权
1、前言
1.1、OAuth 2.0 介绍
1.2、OAuth 2.0 与 JWT 的关系
- OAuth 2.0 是一种认证授权的协议规范
- JWT 是基于 Token 的安全认证协议的实现
OAuth 2.0 的认证服务器签发的 Token 可以使用 JWT 来实现,JWT 轻量且安全。
1.3、基于 OAuth 2.0 认证授权的框架
OAuth 的官网提供了很多开发框架,分为服务器端和客户端,其中服务端和客户端都支持的 Java 框架有四个:Apache Oltu、Spring Security OAuth、Restlet Framework、Keycloak。值得一提的是,Keycloak 为现代应用和分布式服务提供了一套完整的认证授权管理开源解决方案,是一个独立的认证授权服务器;主要是基于 OAuth 2.0 协议实现,同时提供了多种语言库,可以很快速地根据业务需求将 Keycloak 集成到企业项目中去使用。
构建 Privoxy、Tor、ExpressVPN 的 Docker 镜像
Spring Security + OAuth 2.0 + JWT 开发随笔
JWT 签名与验签
公钥与私钥生成
使用 JDK 提供的 keytool 工具生成 JKS 密钥库 (Java Key Store),认证授权服务器会使用私钥对 Token 进行签名,一般将生成的 shop.jks 文件放在 resources 目录下
1 | keytool -genkey -alias shop -keyalg RSA -keypass 123456 -keystore shop.jks -storepass 123456 |
根据私钥生成公钥,将其保存在 public.crt 文件中,用于对 Token 进行验签,一般将其放 resources 目录下
1 | keytool -list -rfc --keystore shop.jks | openssl x509 -inform pem -pubkey -noout |
Hexo Next 主题使用 Waline 评论系统
前言
本教程的内容可能已过时,一切以 Waline 官方文档 为准。
版本说明
| 软件 | 版本 | 描述 |
|---|---|---|
| linux | CentOS 7.9 | |
| docker | 20.10.5 | |
| mysql | 5.7.26 | |
| node | 14.17.3 | |
| hexo | 5.4.0 | |
| next | 8.12.1 | |
| waline-admin | 0.18.0 | |
| waline-client | 2.5.1 | |
| waline-server | 1.18.5 |
C 语言入门基础之一
大纲
编程语言发展历程
机器语言
计算机的大脑或者说心脏就是 CPU,它控制着整个计算机的运作。每种 CPU,都有自己的指令系统。这个指令系统,就是该 CPU 的机器语言。机器语言是一组由 0 和 1 系列组成的指令码,这些指令码,是 CPU 制造厂商规定出来的,然后发布出来,要求程序员遵守。要让计算机干活,就得用机器语言(二级制数)去命令它。这样的命令,不是一条两条,而是上百条。不同型号的计算机其机器语言是不相通的,也就是使用某种计算机的机器指令编制的程序,不能在另一种计算机上执行。
汇编语言
机器语言编程很令人烦恼,因此终于出现了汇编语言,就是一些标识符取代 0 与 1。汇编语言是一门人类可以比较轻松认识的编程语言。只是这门语言计算机并不认识,所以人类还不能用这门语言命令计算机做事情。所以,有一类专门的程序,既认识机器语言,又认识汇编语言,也就是编译器,将标识符换成 0 与 1,知道怎么把汇编语言翻译成机器语言。
高级语言
汇编语言和机器语言都是面向机器的,机器不同,语言也不同。既然有办法让汇编语言翻译成机器语言,难道就不能把其他更人性化的语言翻译成机器语言?1954 年,Fortran 语言出现了,其后相继出现了其他的类似语言。这批语言,使程序员摆脱了计算机硬件的限制,把主要精力放在了程序设计上,不在关注低层的计算机硬件。这类语言,称为高级语言。同样的,高级语言要被计算机执行,也需要一个翻译程序将其翻译成机器语言,这就是编译程序,简称 “编译器”。这类高级语言解决问题的方法是分析出解决问题所需要的步骤,把程序看作是数据被加工的过程。基于这类方法的程序设计语言,成为了面向过程的语言。
Hexo 与 Next 版本升级教程
前言
Next 各版本的仓库
| 年份 | 版本 | 仓库 |
|---|---|---|
| 2014 ~ 2017 | v5 | https://github.com/iissnan/hexo-theme-next |
| 2018 ~ 2019 | v6 ~ v7 | https://github.com/theme-next/hexo-theme-next |
| 2020 | v8 | https://github.com/next-theme/hexo-theme-next |
Docker 基于 Gitolite 搭建 Git 服务器
前言
官方教程
镜像数据卷目录
| 目录 | 用途 |
|---|---|
| /home/git/repositories | 存储实际的 Git 仓库 |
| /etc/ssh | 存储 SSH 主机密钥 |
Docker 安装 Gitolite
这里直接使用国外开发者构建好的 Docker 镜像 elsdoerfer/gitolite,不再通过手写 Dockerfile 来构建 Gitolite,具体使用方法如下:
1 | # 拉取镜像 |
ES6 快速入门教程
ECMAScript
ECMAScript 简介
ECMAScript 是一种由 Ecma 国际(前身为欧洲计算机制造商协会,英文名称是 European Computer Manufacturers Association)通过 ECMA-262 标准化的脚本程序设计语言。ECMAScript 是浏览器脚本语言的规范,而 JavaScript 和 JScript 都是 ECMAScript 规范的实现者。
前端发展历程回顾
Web 1.0 时代
- 最初的网页以 HTML 为主,是纯静态的网页。网页是只读的,信息流只能从服务到客户端单向流通。开发人员只关心页面的样式和内容即可。
Web 2.0 时代
- 1995 年,网景工程师 Brendan Eich 花了 10 天时间设计了 JavaScript 语言。
- 1996 年,微软发布了 JScript,其实是 JavaScript 的逆向工程实现。
- 1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。
- 1997 年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是 1.0 版。
- JavaScript 和 JScript 都是 ECMAScript 规范的实现者,随后各大浏览器厂商纷纷实现了 ECMAScript 规范。
Nacos 2.0 发布,性能提升 10 倍
前言
继 Nacos 1.0 发布以来,Nacos 迅速被成千上万家企业采用,并构建起强大的生态。但是随着用户深入使用,逐渐暴露一些性能问题,因此启动了 Nacos 2.0 的隔代产品设计,时隔半年终于将其全部实现,实测性能提升 10 倍,相信能满足所有用户的性能需求。
Nacos 简介
Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它孵化于阿里巴巴,成长于十年双十一的洪峰考验,沉淀了简单易用、稳定可靠、性能卓越的核心竞争力。
Nacos 2.0 架构
2021 年 03 月 30 日,Nacos 2.0 正式对外发布。全新的 2.0 架构不仅将性能大幅提升 10 倍,而且内核进行了分层抽象,并且实现插件扩展机制。Nacos 2.0 架构层次如下图,它相比 Nacos 1.X 的最主要变化是:
- 通信层统一到
gRPC协议,同时完善了客户端和服务端的流量控制和负载均衡能力,提升的整体吞吐。 - 将存储和一致性模型做了充分抽象分层,架构更简单清晰,代码更加健壮,性能更加强悍。
- 设计了可拓展的接口,提升了集成能力,如让用户扩展实现各自的安全机制。
