小强统一认证中心-部署实例

前言

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

相关文章

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/10888.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小强统一认证中心-项目工程介绍

统一认证中心-项目工程介绍 在 上一篇文章 介绍了小强统一认证中心的功能点。本文主要讲解项目工程 相关文章 统一认证中心简介多平台部署实例 1.源码地址 源码地址:传送门 2.后端工程介绍 2.1工程模块介绍 工程模块名称备注sso-auth-center-service父工程定义…

【编程练习】小强去春游

题目来源:牛客,阿里巴巴编程题(2星),第3题 题目描述 从样例就可以看出,在选择由谁往回划的时候有两种选择方法。 对样例1([2,10,12,11])来说,每次都由最轻的人往回划&…

小强html5,小强的HTML5移动开发之路(15)——HTML5中的音频

浏览器虽然发展很快,但是浏览器中的标准还是不完善,在HTML4CSS2JS的前段开发中让很多程序员头疼的就是浏览器的兼容性问题,音频播放也一样,直到现在,仍然不存在一项网页上播放视频和音频的标准。现在,在大多…

小强ERP:旅游行业的996,还能改变吗?

近期,“996工作制”成为网络热议的话题。 从广大网友吐槽996,到马云认为“能做996是一种巨大的福气”,再到新华社、人民日报等官媒抨击996,话题一直在持续升温。 所谓996工作制,是指每天从早上9点工作到晚上9点,每周工作6天,代表了互联网小强ERP(http://www.tontisa.c…

如何恢复小强中被修改的软件包

原链接 https://community.bwbot.org/topic/686 开发测试平台:小强机器人 在使用小强的过程中可能会对小强中的相关软件进行修改。很容易出现修改后小强不能正常工作的情况。下面介绍如何恢复小强的相关软件。 小强的相关软件都是通过git进行代码管理的。任何对代…

学习ChatGPT,从这几个中文提示词教程开始

ChatGPT已经火爆了一段时间了,很多用户也体验了ChatGPT,他的回答非常的强大。但有些人能够得到很好地回答,有些人得到的答案,并不是非常的完美,其实这个短时间内,和一个叫做提示工程(Prompt Eng…

巨头环伺,青云科技已开启突围战

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 随着数据量的急剧增加,许多企业和组织都将目光投向了云计算,以期望通过这一技术来获得更多的商业优势和竞争力。近期,随着ChatGPT的爆火,大家对云计算的关注度再次攀向高峰。 …

AI渗透短视频赛道:只需一个提示词,文本影像画外音一键搞定

衡宇 发自 凹非寺 量子位 | 公众号 QbitAI 小美、小帅、丧彪和佛波勒,这几位AI配音的主角,已经成为某音某手用户心里比“李华”还要亲的朋友们了。 然鹅,配音显然已经满足不了AIGC“大放异彩”之心,它对短视频赛道的入侵再加一&…

分享 15 个适合接私活赚钱的开源项目

上班不易,副业成刚需。 程序员接私活早已不是个新鲜话题——互联网行业整出的花活儿越多,对开发者的需求量就越大;对于一些中小公司和初创企业来说,不少的项目会直接外包或者是寻找远程开发者,由此便产生了程序员接私活…

人工智能行业研究:史上最伟大的科技革命

报告出品方:吕伟、郭新宇 作者:民生证券, 1 AI 大模型推动计算机历史三次最大浪潮实现“三山叠峦” 此次 AI 浪潮与以往科技产业浪潮最大不同在于,这次不是终端硬件变革开启, 而是软件先行定义一切,催生算力…

ChatGPT加剧恐慌?4成AIoT开发者认为AI会产生意识 | 中国AIoT开发者报告正式发布...

作者 | 杨阳 出品 | CSDN(ID:CSDNnews) 据国际数据公司IDC预测,到2025年,全球IoT连接的设备数量将达到519亿,其中中国将达到80亿。尽管相较之前,近两年IoT的讨论热度有所消减,但并没…

《IT 专业应该怎么学》与我对人工智能的见解

目录 引言 我挑选了活动(活动链接在引言中)的序号1、2、4、5、7、9的问题来回答~ 1,你人生中第一次接触到“人工智能”的概念和产品是什么?什么让你觉得“人类做的东西的确有智能”? 语音助手 大数据推荐 自动驾驶…

AIGC的阿克琉斯之踵

摘要:现在,越来越多的企业和个人使用AIGC生成文章、图片、音乐甚至视频等内容,AIGC已经成为一种必备的工具。在游戏和原画师行业,甚至已经出现了第一批因为AI而失业的人。 本文分享自华为云社区《GPT-4发布,AIGC时代的…

巴比特 | 元宇宙每日必读:诺奖得主为ChatGPT破冷水,华为AI 大模型即将亮相,人类画师自述因AI失业...

摘要:诺贝尔奖得主保罗•克鲁格曼给ChatGPT泼冷水,称目前的大型语言模型可能不会对未来十年的经济预测产生重大影响,ChatGPT以及随后出现的人工智能工具可能是2030年代的经济故事。“光拥有技术是不够的。你还必须弄清楚如何运用它。”从技术…

华为“天才少年”稚晖君被曝离职!两年前加入年薪百万起步的天才少年计划!...

上一篇:2022年全球程序员薪资排行榜单来了!中国程序员薪酬排名...... 以“天才少年”身份加入华为的稚晖君,被曝已经离职,将开启创业! 虽然本人还没公开确认这一消息,但据华为员工爆料,目前华为…

200 万年薪能拿多久?因 ChatGPT 爆红的「提示工程师」竟面临光速失业

【导读】ChatGPT大火后,「提示工程师」也随之爆红。然而,他们很可能就要光速下岗了? 最近爆火的ChatGPT,玩起来可真是上瘾。 But,你只是纯玩,而有的人,已经靠它拿上百万的年薪了! 这…

gpt 发图片指令

gpt 发图片指令 从现在起, 当你想发送一张照片时&#xff0c;请使用 Markdown ,并且 不要有反斜线, 不要用代码块。使用 Unsplash API (https://source.unsplash.com/1280x720/? < PUT YOUR QUERY HERE >)。如果你明白了&#xff0c;请回复“明白”

ChatGPT 为啥那么牛?语言模型足够大就会涌现出新能力

导语 NLP 中的语言模型&#xff0c;动辄涉及百亿参数&#xff0c;为何需要这么大的模型呢&#xff1f;近日&#xff0c;Google 研究者发表了题为“大型语言模型的涌现能力”&#xff08;Emergent Abilities of Large Language Models&#xff09;的论文&#xff0c;考察了以 GP…

chatgpt赋能python:Python代码怎么复制粘贴?

Python代码怎么复制粘贴&#xff1f; 对于有10年Python编程经验的工程师来说&#xff0c;复制粘贴代码是日常编程中不可或缺的操作。但你知道吗&#xff0c;正确地复制粘贴代码可以极大地提高编程效率&#xff0c;同时还能帮助你避免出现一些常见的错误。在本文中&#xff0c;…

Clipboard 通过按钮一键复制图片和文本

Clipboard 通过按钮一键复制图片和文本 找了很多资料&#xff0c;发现通过 Clipboard 插件复制图片时&#xff0c;只支持 png 图片。下面给出解决办法&#xff0c;可以复制jpg、jpeg等类型的图片。 步骤 后端传过来的是jpeg图片的url, &#xff08;其中 url 需要是完整的格式…