请教个问题,SSO(单点登录)能不能用 JWT 实现?

2017-11-09 16:54:36 +08:00
 wanghaa
有没有相关的 demo,感觉 CAS 略复杂了点
11164 次点击
所在节点    Java
14 条回复
hezhou920
2017-11-09 17:09:15 +08:00
显然是可以的
janxin
2017-11-09 17:09:41 +08:00
可以
wanghaa
2017-11-10 09:04:24 +08:00
@hezhou920 @janxin 用 jwt(token)的话,假如 A 系统已经登录了,在访问 B 系统的时候是怎么知道已经登录的呢?
K1W1
2017-11-15 19:39:00 +08:00
@wanghaa #3 因为认证与验证是分开的,用户通过 A 服务器登录得到了签名 token (认证),然后用户再请求 B 把 token 一起发过去,B 拿到约定好的 token 就会是验证是否是有效,有效就是登录用户,无效重新登录
wanghaa
2017-11-16 08:21:41 +08:00
@K1W1 访问 B 系统的时候用户怎么知道 token 在哪
K1W1
2017-11-16 09:49:26 +08:00
@wanghaa #5 看你们约定了,一般放在 cookie 或者请求头,甚至请求参数带过来就行了,参数放在哪、参数名称是什么这都是要约定好的
wanghaa
2017-11-16 17:35:37 +08:00
@K1W1
问题 1. 不同的域名怎么可能还放在 cookie 里呢?
问题 2. 在 A 系统登陆过之后,访问 B 系统的时候是没有带 Token 的
K1W1
2017-11-16 17:59:40 +08:00
@wanghaa #7 问题 1.看你怎么做吧,一般不同服务,至少我们只是子域名不同。根域名下的 cookie 是共用的。问题 2.对接 sso 相应服务是肯定要修改的,不然不可能实现
andymee
2017-11-30 23:05:42 +08:00
不管是访问 A 系统 还是 B 系统 都是要跳转到 认证系统 AUTH 去的 比如 auth.app.com 可以在这个域下 创建 COOKIE 这样 在 A 系统跳转到 AUTH 时 创建 cookie token=tk1 然后跳会 A 系统 a.app1.com 带上发给 A 的 cookie token=tk2 之后访问 b.app2.com 发现没有 token 需要登录 那么就跳转到 auth.app.com 这时候 发现已经有 cookie token=tk1 了 那验证登录有效后 带上签发给 B 的 token tk3 跳转 B . 这样访问 B 系统就只是一个跳转 不需要登录了..
abcbuzhiming
2017-12-01 10:29:44 +08:00
@wanghaa
1.为什么不能放,能不能放是由客户端决定的,cookie 这玩意是个客户端能拿到就能放在任何地方的东西
2.访问 A 系统的目的就是为了生成 token,这个 token 是会返还给客户端的,客户端要拿着这个 token 去访问 B,B 系统得到这个 token 后,可能会去找 A 系统问询,也可能会去找统一的 token 校验服务器问询。这才是整个流程
kba977
2017-12-04 22:47:36 +08:00
可以的, 推荐一个连接 [Single Sign On (SSO), Scalable Authentication Example with JSON Web Token (JWT) and Spring Boot]( https://hellokoding.com/hello-single-sign-on-sso-with-json-web-token-jwt-spring-boot/)
snakejia
2017-12-12 14:32:32 +08:00
@andymee 偶然间看帖子,解了困扰我半天的问题,3Q
ivydom
2019-10-10 16:36:25 +08:00
用 authing 可以快速实现单点登录,快速体验: https://sample.authing.cn
Shikyou
2020-06-24 16:11:44 +08:00
实现单点登录最快的方式,可以用国内的 Authing,国外的 Auth0 / AWS Cognito 这一类用户身份验证的云服务,给应用添加注册、登录和访问控制功能很快

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

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

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

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

© 2021 V2EX