统一登陆该怎么实现

2023-05-25 11:45:02 +08:00
 AlpacaCode
朋友公司有个专门的平台做跳转,只要在该平台上登陆,其他录入的十几个平台都不用二次登陆,好奇这样的功能是咋实现的,跨域存储 cookie 吗?如果是都是自己开发的平台还好,像 gitlab 禅道这种如果要实现的话,都得去二次开发才能实现吧?
有没有大佬科普一下
1364 次点击
所在节点    问与答
10 条回复
Jason168
2023-05-25 11:49:03 +08:00
感觉不安全,有没有可能是获取了登录的 token 或者 cookie 保存到服务器 你访问的时候再给你加上去
fu4k
2023-05-25 11:50:12 +08:00
了解下 oauth2
boris1993Jr
2023-05-25 11:51:25 +08:00
我们就这样的
目测 OAuth 2 flow
登陆服务器记录你目前的登录状态
应用比如 JIRA 啥的都支持 OAuth 2 ,配置好了就行
boris1993Jr
2023-05-25 11:52:01 +08:00
另外这个玩法的学名叫单点登录( SSO )
TyCoding
2023-05-25 11:57:45 +08:00
这不就是单点登录吗?令牌是存储在单独的认证服务器的,如果是不同的域名间访问,估计是跨域拿 cookie 或者 url 重定向携带 token 的方式呗
InDom
2023-05-25 11:58:43 +08:00
先定义三者:用户,登陆中心,A 网站。

用户:打开 A 网站
A 网站:这人谁啊,不认识,得登陆,跳转到登陆中心,并携带消息,我需要知道这个人的全部资料
登陆中心:这人谁啊,没登陆,你账号密码多少,让我看看你是谁
用户:输入账号密码,点登陆
登陆中心:哎呦喂,这不是张某嘛,我知道了,你请走好,跳转到 A 网站,携带信息:这货登陆了,但我不能告诉这样告诉你他是谁,你等下拿后门的经文来找我,经文:哦麻利麻利哄你个 c64*82+62
A 网站:哦,有名字啊,拿着经文“哦麻利麻利哄你个 c64*82+62”从后台找“登陆中心”询问,这谁啊,这是你给我的经文,你告诉我他是谁,我着急
登陆中心:这就是那谁,张某,男的,30 多岁,去年来的,这是他照片
A 网站:好的,尊敬的张某,欢迎回家。
AlpacaCode
2023-05-25 13:25:26 +08:00
@TyCoding 好奇他们跨域是如何存放 cookie 的 比如我在 a.com 上做了单点登录, 同时也拿到了 b.com c.com 的 cookie 并且存到服务器里面,那在用户点击 b.com/index.html or c.om/index.html 的时候 需要从服务器里面拿这些 cookie 嘛, 比如 gitlab 这种不是自己开发的平台,是不是还要二次开发来实现拿 cookie 的这个功能
TyCoding
2023-05-25 13:42:15 +08:00
@AlpacaCode cookie 是存储在浏览器的
nothingistrue
2023-05-25 13:57:37 +08:00
单点登录,是一个很庞大的框架,一两句说不清楚。拿“单点登录”、“OAUTH2”当关键词自己去搜资料吧。好在这俩是很老的框架,你还能找到专业性很高的文章。
xianzhe
2023-05-25 20:12:45 +08:00
https://apereo.github.io/cas/6.5.x/installation/WAR-Overlay-Installation.html ,可以看下这个,搜搜 cas 单点登录怎么做的,然后自己实现个简化版的

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

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

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

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

© 2021 V2EX