Springboot 多个项目如何 统一认证?

2020-04-23 19:47:12 +08:00
 mocxe2vwww

现在有 2 个独立的项目 app1 和 app2 。都是采用 jwt 的方式进行认证。

如何带着 app1 的 token 去访问 app2 的接口时 无需再次认证。

我想要的方案如下:

1. 两个项目用一套认证逻辑,同样的 key 加密或解密 token.(感觉有点 low)

2. 集成 spring cloud 在网关进行权限认证

3. oauth2

4. cas

你们认为那种方案比较合适,或者还有其他什么方式,帮忙给点建议,谢谢。

4037 次点击
所在节点    Java
16 条回复
MikeLei
2020-04-23 19:55:15 +08:00
我也是采用 jwt,集成 Shiro,把 token 跟权限缓存到 redis 里面,两个系统用同一个 redis 就不需要再次认证啦。
Jafee
2020-04-23 20:39:23 +08:00
可以用网关统一认证,然后再转发到相关服务。
xuanbg
2020-04-23 20:48:16 +08:00
正规的做法是 2 楼的方案。当然 1 楼的也能用,但不推荐。
CoderGeek
2020-04-23 20:51:59 +08:00
oauth2
CoderGeek
2020-04-23 20:52:23 +08:00
做统一鉴权服务 我的主页有类似的 demo
CoderGeek
2020-04-23 20:54:40 +08:00
仔细看了下 我说的不太好 , 这种 token 分发要收口在一个服务 还要维护鉴权关系 做一个分发鉴权的系统 或者网关拦截
两个 token 还要有权限配置
wangxiaoaer
2020-04-23 21:05:04 +08:00
@Jafee 如果网关做认证那是不是相当于网关开始涉及业务了?
huijiewei
2020-04-23 22:03:53 +08:00
@wangxiaoaer 网关只做认证
Kyle18Tang
2020-04-24 00:36:41 +08:00
OAuth2
jzmws
2020-04-24 08:52:20 +08:00
最外面套一个网关 其他模块都不做认证
mocxe2vwww
2020-04-24 10:03:39 +08:00
@xuanbg 确实,还是网关最合适。
abcbuzhiming
2020-04-24 11:10:37 +08:00
想简单就 1 楼,redis 缓存 jwt,正统一点的是 2 楼
securityCoding
2020-04-24 11:20:37 +08:00
@wangxiaoaer 鉴权不算具体业务,正确的做法就是通过网关,对底层的微服务屏蔽登录态 /权限相关的逻辑. 网关层面鉴权成功将登录态属性设置到上下文中( http-header/rpc-context) ,底层服务直接获取属性就好 .
securityCoding
2020-04-24 11:21:49 +08:00
springboot 转 spring-cloud 几乎无成本 ,阿里开源的 nacos 同时做配置中心 /注册中心非常方便
mocxe2vwww
2020-04-24 22:09:38 +08:00
@securityCoding 我看了下你说的 nacos,感觉是阿里云 API 网关的简化版。
securityCoding
2020-04-25 10:03:47 +08:00
@mocxe2vwww nacos 跟网关不是一个领域的东西 ,你可以这样理解他综合了 Zookeeper 和 Apollo

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/665451

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX