如题,最近一直在搞微服务场景下的认证授权,总是感觉力不从心。
我们公司技术很垃圾,所以我想请教一下大家在生产中是用什么呢?
自己写一套合适吗(感觉就是利用过滤器和 AOP ),如果自己写的话需要注意哪些地方(特别是微服务场景下)呢?
1
LPJD 238 天前
自己写,问下 chatgpt ,Spring Security 复杂度直线下降 80%。写好后能用几年
|
2
zzmark06 238 天前 via Android
理论应当框架化,实际自研比重相当大
微服务场景,插件化更重要,让各个服务能尽可能便捷接入。 不过公司内技术垃圾,更推荐丢了煞笔的微服务, 给别人打个广告,权限问题可以看一眼 casbin 这个库,功能比较全面,接入尚且算简单。单点登录(第三方登录)还有它家八竿子打不到的 casdoor ,都挺强悍 |
3
ilovey482i 238 天前
采用现成的 API 网关不香吗?你可以看看现成的 API 网关
|
4
limyel OP @zzmark06 真的想丢了微服务,我们公司是一个人负责好几个服务😂,单体架构下 Spring Security 也是眉清目秀,上了所谓的微服务一下子把开发成本拉上去了哎
|
6
limyel OP @ilovey482i 意思是说用其他网关吗
|
7
521jx123OvO 238 天前
我们使用了 SpringSceurity+SpringAuthonizationServer 技术难度直线提升,现在看 satoken 很眉清目秀
|
8
wxw752 238 天前
目前用的是 Spring Security OAuth2.0
|
9
lmq2582609 237 天前
sa-token 可以吗
|
10
Stevenv 237 天前 1
satoken 看文档要 star 不用了。
|
11
Akitora 237 天前 1
前段时间刚趟过这坑,建议是要么自己写简单的过滤器拦截器,并且自己签发 token ,验证 token 。
要么引入 Spring Security ,配置成 Resource Server ,配合一个正儿八经的 Oauth2 Authorization Server ,也不一定非得用 Spring Authorization Server ,事实上我嫌弃它太耗内存,用 Go 糊了一个勉强能用的。 这两种方式都不算太麻烦,就怕你非得引入 Spring Security 又想自己签 token 验 token ,那你得把 Spring Security 内部流程理清然后重写好一部分接口实现,真心不推荐。 |
12
winRain 237 天前
我有一套完整的微服务认证、鉴权、支持 OAuth2 、SAML 、且可拓展、安全性高的方案,直接开箱即用,要不贵司考虑一下让我直接过去?哈哈哈
|
13
dlmy 237 天前
我司 ToB 系统用 Spring Security ,ToC 系统用自研的组件( ToC 系统一般不会使用重量级的框架)。
自研组件就 30 多个类,以微内核 + 插件化 + SPI 的方式组成了过滤器链,可快速插拔。 |
14
BarackLee 237 天前
用 JWT 吧,面试的时候还能吹吹水,什么分布式 session 一致之类的,token refresh 这种
|
15
gongquanlin 237 天前
sa-token 的文档按 f12 里面有注释,可以去掉 star 限制
|
16
limyel OP @lmq2582609 在用了,目前用 satoken 在网关认证,在各个服务做鉴权,比 Spring Security 上手快...
|
17
zzmark06 237 天前 via Android
授权是个麻烦玩意,尤其是既要又要,还不想遵循现有标准,更麻烦了
spring security 就是个超级大一统框架,要啥有啥,要啥都麻烦,毕竟起夜级定制太多,也能理解 小项目,这些都屌用没有,找个新一些热门一些的库按基本流程去掉一切定制想法,差不多就是 OK 的了 |
18
tairan2006 237 天前 via Android
自己写
|
20
limyel OP @Akitora 我们现在就是最后一种状态😂,看了一下别人用的 Spring Security Oauth2 ,感觉实现了很多自定义的东西但是不知道为什么要这么做...不过自己写的话上生产会不会有什么安全问题,因为感觉认证授权这套东西要考虑的东西会比较多?框架会不会做的更全面一些
|
21
fkdog 236 天前
像 OAuth 这种流程可以自己实现,原理也不难。
这种认证授权最大的难点在与安全两个字,大部分开发不是很少涉猎安全领域,自己实现的登陆功能往往都是漏洞百出。很多公司内网系统,随便扫扫,什么 xss 、csrf 、session fixation 都能扫出来。所以对于安全类的功能,不要自己造轮子。 事实上微服务压根就不需要什么 OAuth 。 你单体架构里的 Service 替换成 RPC 调用就是微服务了,用不用 OAuth 跟是不是微服务没有任何关系。 |
22
Ashe007 235 天前
一群若知,完全不懂装懂
|
23
Ashe007 235 天前
1.从业年龄<3 年
选 Spring Security 方案实现,作用于网关(SpringClou d 的 Gateway/Netflix 的 Zuul),微服务系统的请求都是通过网关同一进入系统内的,在此处进行鉴权&授权。tips:认证授权的核心与 AOP 没有关系 2.从业年龄≥3 年 建议辞职,把岗位让给有能力的人,还自研都出来了 你理解 Oauth2 协议吗? |
24
totoro52 235 天前
我选了 Spring Security ,我单独设计了一个认证服务, 网关去调认证, 写了个注解去扫描每一个控制器的 path ,自动配置入库,分配权限时就是分配这个 path , 一个请求进来了就取 path 去判断, 判断这块也是拿 Spring Security 去做,它自带一大堆 filter 和 handler ,改改就可以轻松完成这些需求,就这样就完成了认证和鉴权。 认证那块我没使用 Security 的 oauth2 ,慎用他, 坑非常多。
|
25
totoro52 235 天前
另外你说的 Oauth2 ,这个和微服务有直接关联吗。。。Oauth2 是用来连通两个站点之间的账号体系的授权,好像和微服务没啥关系吧,或者说你的微服务没有网关,每个服务单独一个域名? 为了做域名之间的认证? 那也和 Oauth2 没啥关系,应该和单点登录有关系
|