【微服务】Nacos 认证机制

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅uniapp微信小程序🍅面试题软考题免费使用,还可以使用ChatGPT,微信支付,扫码加群

点击这里预览

🍅开源项目免费哦(有vue2与vue3版本): 点击这里克隆或者下载   🍅

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

Java项目案例《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html

uniapp小程序《100套》
https://blog.csdn.net/qq_57756904/category_12199600.html

目录

一、背景

二、需求

三、方案

1、安全架构选型

2、会话管理

2.1、会话选型

2.2、Session 登录流程

2.3、Token 登录流程

2.4、jwt 框架选型

2.5、会话超时

3、SSO 支持

4、UI设计

5、接口设计

6、数据库表设计

6.1、user表

6.2、roles表

7、Filter 拦截请求

8、配置开关

9、传输通道

💖微服务实战

💖 Spring家族及微服务系列文章 


一、背景

随着 Nacos 在生产使用,用户要求权限管理机制。考虑到做完整的账号权限管理机制,需要比较大的代价。因此先做⼀个管理员账号的登录管理,从而降低安全风险。

二、需求

1. 支持定制启用或不启用登录系统,默认启动登录功能(有人自己做控制台,不想启用登录能力)
2. SSO 支持 LDAP 即可(通过扩展机制)
3. 用户退出

三、方案

1、安全架构选型

目前开源框架主要有 Spring Security 和 Apache Shiro,下面进行⼀下简单对比。
由于 Nacos 本身就是⼀个 spring-boot 的项目,为了更好的能适应外部的多种 sso 需求,和更细粒度的权限控制台能力,选择 spring security。

Spring Security(推荐)Apache Shiro
易用性简单够用略复杂强大
sso 支持情况LDAP SMAL Oauthonly SMAL
权限控制粒度
三方依赖Spring
社区活跃度

2、会话管理

2.1、会话选型

登录流程现在主要有两种模式,⼀种是 session 模式,⼀种是 jwt 模式。为了更好的解决多端(移动端等)和分布式会话保持,采用 jwt 模式。

session 模式token 模式(推荐)
分布式回话保持默认换⼀个机器就没了,如果具备分
布式,需要把 session 放到 redis 中
天生具备分布式能力,因为身份直接
放到 token 里面了
后端实现成本简单复杂,需要依赖 jwt 的组件搞,扩展
之前 sso 实现成本也比较高
前端实现成本高,目前采用 reactive,都在⼀个页
面,无法做拦截跳转
简单

2.2、Session 登录流程

2.3、Token 登录流程

2.4、jwt 框架选型

目前看 jjwt 框架的 star 和 commiter 比较多:
http://andaily.com/blog/?p=956

2.5、会话超时

会话默认 30 分钟超时,暂时不可配置。

3、SSO 支持

目前仅支持 LDAP,后续让社区贡献,如 SMAL。

4、UI设计

登录成功之后,右上角显示登录用户名,和退出按钮。 点击退出,这个 session 失效。 

5、接口设计

接口描述接口 url(暂定)接口操作类型参数
登录接口/auth/loginPOSTusername=xx&password=xx
form 格式
退出接口/auth/logoutGET

6、数据库表设计

6.1、user表

数据列类型是否必填备注
usernamevarchar(50)用户名
passwordvarchar(500)密码,采用 BCrypt 加密算法存储
enabledboolean是否启用

6.2、roles表

数据列类型是否必填备注
usernamevarchar(50)用户名
rolevarchar(50)角色

7、Filter 拦截请求

目前发 sso 的时候我们 console server 都跑在⼀个进程里面。调用的接口都是 naming/config的 openapi。 这些接口登录 filter 是不能拦截的,因为拦截需要登录,会影响 server 调用。 不拦截,控制台的数据请求又拦截不了,登录请求也控制不了。
关于这个问题,我有三个方案:

方案具体方案备注
区分 ajax 请求做不同处理拦截只控制前端 ajax 请求的
登录
目前采用 spring-security 框
架不能做到这个特殊逻辑控制
console 接口全部代理控制台这层要走 filter 的服
务,未来都要走 console 的
controller 转发⼀下,以便统
⼀处理
改这个成本比价高
console 接口部分代理(推荐)只把配置列表
服务列表
这种高频先整个控制台管控
这是折中方案,未来要走全部
代理方案,以便可分可合

8、配置开关

默认开启登录功能,可配置不开启登录功能,以便部分企业研发自己控制台,使用我们 console的 openapi。

9、传输通道

登录目前大部分都是 https,nacos 默认不支持 https,如果需要使用 https 功能,在 nacos 前面配置 nginx,nginx 上做 443 端口转后端 8848 端口,nginx 上管理证书。

💖微服务实战

【微服务】SpringCloud的OpenFeign与Ribbon配置

集Oauth2+Jwt实现单点登录

Spring Cloud Alibaba微服务第29章之Rancher

Spring Cloud Alibaba微服务第27章之Jenkins

Spring Cloud Alibaba微服务第24章之Docker部署

Spring Cloud Alibaba微服务第23章之Oauth2授权码模式

Spring Cloud Alibaba微服务第22章之Oauth2

Spring Cloud Alibaba微服务第21章之分布式事务

Spring Cloud Alibaba微服务第18章之消息服务

Spring Cloud Alibaba微服务第16章之服务容错

Spring Cloud Alibaba微服务第14章之分库分表

Spring Cloud Alibaba微服务第11章之MyBatis-plus

Spring Cloud Alibaba微服务第8章之OpenFeign

Spring Cloud Alibaba微服务第7章之负载均衡Ribbon

SpringCloud Alibaba微服务第6章之Gateway

SpringCloud Alibaba微服务第4章之Nacos

SpringCloud Alibaba微服务开篇

💖 Spring家族及微服务系列文章 

【Spring】一文带你吃透IOC容器技术

【微服务】SpringCloud中OpenFeign请求处理及负载均衡流程

【微服务】SpringCloud中Ribbon的WeightedResponseTimeRule策略

【微服务】SpringCloud中Ribbon的轮询(RoundRobinRule)与重试(RetryRule)策略

【微服务】SpringCloud中Ribbon集成Eureka实现负载均衡

【微服务】SpringCloud轮询拉取注册表及服务发现源码解析

【微服务】SpringCloud微服务续约源码解析

【微服务】SpringCloud微服务注册源码解析

【微服务】Nacos2.x服务发现?RPC调用?重试机制?

【微服务】Nacos通知客户端服务变更以及重试机制

【微服务】Nacos服务发现源码分析

【微服务】SpringBoot监听器机制以及在Nacos中的应用

【微服务】Nacos服务端完成微服务注册以及健康检查流程

【微服务】Nacos客户端微服务注册原理流程

【微服务】SpringCloud中使用Ribbon实现负载均衡的原理

【微服务】SpringBoot启动流程注册FeignClient

【微服务】SpringBoot启动流程初始化OpenFeign的入口

Spring Bean的生命周期

Spring事务原理

SpringBoot自动装配原理机制及过程

SpringBoot获取处理器流程

SpringBoot中处理器映射关系注册流程

Spring5.x中Bean初始化流程

Spring中Bean定义的注册流程

Spring的处理器映射器与适配器的架构设计

SpringMVC执行流程图解及源码

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡布奇诺-海晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值