前言

在前文章中介绍了,认证中心以及工程项目介绍。

相关文章

  • 统一认证中心简介
  • 认证中心-项目工程介绍

本文主要讲解如何部署起来。首先简单的本地部署来-模拟使用认证中心统一认证。

文中附录示例工程源码地址

先上个先行图,登录了认证中心就相当于登录了所有。

下图是先登录认证中心后-跳转到目标系统(也可以直接访问子系统-详见下文)
注意:链接中携带了token

1.环境准备

  • 统一认证中心服务( www.myauth.com)
  • 子系统1(www.sysclient1.com)
  • 子系统2(www.sysclient2.com)

由于是Demo实例,这里若有要访问-需要修改一下本机host,添加如下映射

127.0.0.1 www.myauth.com
127.0.0.1 www.sysclient1.com
127.0.0.1 www.sysclient2.com

注:统一认证中心对接的目标平台可以与其不是在同一个主域名下。这里用本机域名演示一下。

2.认证中心服务

2.1数据库导入

传送门

2.2后台服务

2.2.1源码地址

源码传送门

相关属性:

  • 系统编码 auth
  • 后台服务启动端口:9901
  • vue前台项目启动端口:9528

2.2.2配置修改

修改配置文件 config/目录下配置文件 application-dev.properties

  • 配置数据源(以spring.datasource.前缀的相关配置)
  • 配置redis (以spring.redis.前缀的相关配置)
  • sys.config.ssoLoginUrl 配置认证中心的登录地址,示例 :http://www.myauth.com:9528/login
  • 其它以sys.config.为前缀的配置,可选 ,默认的话可不编辑
    • 注意:认证中心编码配置 与sso_system表 sys_code 认证中心编码保持一致,sys.config.authSsoSysCode=auth,
    • 超级管理员用户(用户ID|用户名),与导入的表数据一致,默认可不修,不建议修改。sys.config.supperAdminUser=1000|admin

配置完成可启动,
Springboot 项目 启动类 com.sso.AuthCenterAdminApplication

打包启动示例

cd sso-auth-center-service#打包
mvn package -DskipTests=true#切换到目录下
cd sso-auth-center-admin/target#执行启动
java -jar sso-auth-center.jar

2.3前台页面


# 进入项目目录
cd sso-auth-center-vue# 安装依赖
npm install# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npm.taobao.org# 启动服务
npm run dev

浏览器访问 http://localhost:9528

打包发布

# 构建测试环境
npm run build-test# 构建生产环境
npm run build-prod

2.4默认管理员账号

admin/123456

可登录后在个人中心处修改

2.5打包部署与Nginx配置示例

1.后台服务打包发布

2.前端服务打包

# 构建生产环境
npm run build-prod

打包后会生成dist文件夹,将该文件放置到服务器对应位置

Nginx 配置示例

http {include /usr/local/nginx/conf/mime.types;  # 需要改为您的mime.types文件具体位置default_type application/octet-stream;sendfile        on; # 开启高效传输模式keepalive_timeout  65; # 保持连接的时间,也叫超时时间,单位秒charset utf-8; # 设置编码格式access_log  /var/log/nginx/auth-center.log;server {listen 443 ssl;                 # 端口号server_name www.xxxxx;          # 您的域名ssl_certificate /home/devjava/ssl_certificate/4012616_xxxx.top.pem; #填写你的证书所在的位置ssl_certificate_key /home/devjava/ssl_certificate/4012616_xxx.top.key; #填写你的key所在的位置ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #协议配置ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #套件配置ssl_prefer_server_ciphers on;location = / {index index.html;}# 前端项目location / {root /home/devjava/auth-center/sso-auth-center-vue;try_files $uri $uri/ /index.html last;index  index.html; add_header Cache-Control "no-cache, no-store";add_header Pragma no-cache;}# 后台服务location /api/ {proxy_pass http://127.0.0.1:9901;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location ^~ /static/ {root /home/devjava/auth-center/sso-auth-center-vue;expires      max;}}
}

3.子系统示例1

3.1源码地址

源码传送门

相关属性:

  • 系统编码 sys-client01
  • 启动端口:8801
  • 验签方式MD5

这里的子系统,没有使用前后分离,使用SpringBoot + templates 搭建的简易工程。
主要实现功能是

  • 一个拦截器,拦截所有请求。
  • 拦截器内判断是否已经存在局部管缓存,若不存在则请求认证中心认证。

3.2重点配置


#系统编码
sys.config.mySysCode=sys-client01
#MD5签名秘钥(与认证中心-平台详情-添加的秘钥一致)
sys.config.ssoAuthSecret=1234567890#认证中心登录地址
sys.config.ssoAuthLoginUrl=http://www.myauth.com:9528/login
#当前客户端web地址
sys.config.clientWebUrl=http://www.sysclient1.com:8801
#本系统退出登录url
sys.config.myLoginOutUrl=http://www.sysclient1.com:8801/logOutBySsoAuth
#认证中心开放接口地址
sys.config.ssoAuthGetWayUrl=http://localhost:9901/api/open/gateway

3.3核心拦截器

综上,其实就是SSO登录子系统该做的事情。

3.4有图有真相

下图是直接访问子系统1

  • 前提未登录认证中心
  • 直接输入子系统1地址访问
  • 由于未登录-跳转到认证中心登录
  • 登录后重定向到了目标系统

认证中心返回的用户信息+菜单权限信息
注:演示项目这里没做特殊处理,就直接以JSON格式展示出来了。

4.子系统示例2

4.1源码地址

源码传送门

相关属性:

  • 系统编码 sys-client02
  • 启动端口:8802
  • 验签方式RSA

与子系统一代码基本一致,只是签名方式不一致,端口不一致,本示例采用的是RSA加签,推荐使用。

4.2有图有真相

由于系统一已经登录,
所以在访问子系统2的时候,无需再次登录。从下图看到,token也是同一个。

5.建议与优化

以下为若需要部署到生成环境建议优化的地方。

5.1关于跳转到子系统链接中携带Token

  • 上述Demo中系统的token是第一次认证的时候认证中心返回的在URL拼接了参数,建议子系统存到cookie后,重跳转一次,去掉链接中的token参数,由于上述Demo为了演示方便,所以没有这么做。生产环境建议隐藏。

5.2关于图片存储(有默认图-不影响使用)

由于为了简化开源项目中的组件,将用户头像上传或者系统平台的图标上传,存储到了本地。

  • 头像上传接口(com.sso.controller.admin.UserProfileController#avatar)
  • 系统图标上传接口(com.sso.controller.admin.SystemController#uploadIcon)

建议改成单独的图片服务,或者第三方例如OSS

关注程序员小强公众号更多编程趣事,知识心得与您分享

小强统一认证中心-部署实例相关推荐

  1. Hadoop 部署实例

    Linux下的Hadoop–分布式模式的部署实例修改浏览权限 | 删除 Linux下的Hadoop--分布式模式的部署 选用软件版本: 1. jdk 1.6.0.10 2. hadoop-0.19.1 ...

  2. PaaS平台部署实例(20210804)

    PaaS平台部署实例(20210804) 部署SaaS过程 开发者中心创建 我的应用 , 应用名称,ID,git 等 git 仓库 为应用创建数据库和用户名密码. 把开发框架 push 到 git 仓 ...

  3. java的部署目录在哪里_Java:Tomcat的部署实例之资源目录

    原帖收藏于IT老兵博客. Tomcat上部署应用后,原本目录是否会被移除. 实例: 一个项目的资源放在了WebContent下面,这样每次打包,都会将这些文件打包进去,这样在打包时,导致打出来的war ...

  4. vici 开源asp.net mvc支持asp.net2.0II6.0下部署 实例下载地址

    vici 官方asp.net mvc 实例下载地址 http://viciproject.com/wiki/Projects/Mvc/Download 个人正在学习中 下载后可以运行 如下载后,要立马 ...

  5. ElasticSearch Docker 部署实例

    文章目录 前言 基本环境构建 Java安装 docker安装 es部署 安装ES 验证安装 安装kibana 设置密码 进入es容器 安装Vim 修改es容器配置文件 设置es访问密码 设置Kiban ...

  6. dubbo+zookeper实现分布式服务部署实例

    环境部署 Zookeeper安装 下载apach-zookeeper压缩包,解压到目标文件夹即可,复制conf中的zoo_sample.cfg为zoo.cfg,在解压的根目录下新建data文件夹和lo ...

  7. kubernetes 应用部署实例-PHP Guestbook application

    在我的上篇文章用kubeadm安装Kubernetes 1.12.3 cluster 详解 中我们完成了k8s cluster的搭建,接下来我们就开始部署应用吧. 本文按照kubernetes官方文档 ...

  8. Nginx + uWSGI + Python + Django部署实例

    Nginx: Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的 ...

  9. IBM技术专家:Hyperleger Fabric 架构与部署实例解析

    2018 年 3 月 28 日晚 8 点半,区块链前哨迎来了第五期社群分享"超级账本 Fabric 的架构与设计",邀请了来自 IBM 的技术专家赵振华先生现场分享.本文根据分享内 ...

  10. 阿里巴巴开源项目nginx_concat_module企业部署实例

    公司的前端开发工程师今天找我,让我给他搞下淘宝的一个开源项目 nginx_concat_module 模块,将该模块添加到线上的nginx上去. 简介 nginx_concat_module 是淘宝研 ...

最新文章

  1. 1.x到2.x的迁移:可观察与可观察:RxJava FAQ
  2. 运输层课后第33题解析
  3. 总线、设备和驱动的关系
  4. VUE调用高德地图之热力图
  5. Java-String类常用方法汇总
  6. Matlab保留工作区变量教程
  7. 与计算机和网络有关的英语,网络的英语作文(通用10篇)
  8. 从0基础到车载测试工程师,薪资11K,肯拼搏的人,总会有所收获
  9. Python + Django4 搭建个人博客(十):实现文章详情页面
  10. ​做让用户安心合规的智能家居产品——智能家庭用户个人信息保护方案
  11. android对象序列化,Android序列化总结
  12. 会议室可以使用全彩LED显示屏吗?
  13. 关于 人工智能 的思考
  14. 192-神以恩典为你年岁的冠冕
  15. Nginx的Https配置及代理api接口配置
  16. 软件License认证方案的设计思路
  17. Cookie Session跨站无法共享问题(单点登录解决方案)
  18. 强化学习笔记:多臂老虎机问题(6)--Upper Confidence Bound
  19. 报告显示社交是页游玩家的主要游戏偏好 达41%
  20. Dubbo框架基本使用

热门文章

  1. “新浪UC”的后江湖时代------易名新浪SHOW重出江湖
  2. 陈强教授《机器学习及R应用》课程 第十三章作业
  3. 裂变红包码的制作_微信裂变红包
  4. java电子贺卡_基于JAVA WEB的电子贺卡,请帖制作系统
  5. 互联网广告请求链路_微博广告推荐策略工程架构体系演进
  6. 英语四六级考试系统+爬虫获取试题的系统(数据库设计)的开发思路
  7. 用万用表判断三极管极性
  8. 计算机网络基础 课程设计体会,计算机网络课程设计心得体会.pdf
  9. TIPTOP、T100系统程序的内置函数使用详解
  10. 【数据库】三级模式两级映射详解