单点登录问题

2022-06-14 09:20:59 +08:00
 drupal

在谈一个潜在的业务,用户需求把 A 公司的门户系统,B 公司的培训考试系统,C 公司的人事系统。只用一个账号登录所有的 A,B,C 公司的各个系统,部署环境是在内网,计划采用单点登录来解决。不知道是否还有更好的解决方案吗?

如果采用单点登录,我们没有经验,需要找个位兄弟来实施部署调测,有能力的兄弟,请留个 wx 号,后续咱们私下沟通。

3385 次点击
所在节点    程序员
19 条回复
FawkesV
2022-06-14 09:28:28 +08:00
github 有挺多现成的方案, 可以搜看看
zhongpingjing
2022-06-14 09:35:33 +08:00
一般通过门户跳转登录,所以看门户系统有没有认证系统,其他系统是否能够提供免密登录
rabbbit
2022-06-14 09:36:56 +08:00
jorneyr
2022-06-14 09:42:51 +08:00
即使弄了 CAS 单点登录,但依旧没那么简单,账号系统怎么合并?是否要兼容 ABC 3 家公司现有的账号?
A 公司有用户 alice ,B 公司也有用户 alice ,登录时输入 alice ,怎么确定是哪家公司里的账号?
给每家公司的账号加前缀,那么就要改变已有的账号信息,用户是否认可?
并且每家公司的系统都要进行改造,设计的好的系统改造比较容易,设计不好的会被整得筋疲力尽。

看似挺清晰的一件事情,就那么几步,几句话也就说明白了,但真正实施的时候由于实际情况不同代价相差很大。
Casbin
2022-06-14 09:51:39 +08:00
@drupal 可以看下 Casdoor: https://v2ex.com/t/803669 支持自定义用户表导入,账号融合,正好满足你的需求
publicly
2022-06-14 09:58:20 +08:00
drupal
2022-06-14 10:03:45 +08:00
@FawkesV
@zhongpingjing
@rabbbit
@jorneyr
@Casbin
@publicly
感谢各位兄弟。
有能力实施的朋友可以私下联系我。
项目拿下酬谢。
NillSpake
2022-06-14 12:42:08 +08:00
SAML 协议 可以看下
qing108
2022-06-14 13:24:19 +08:00
keycloak 定制可以联系我,keycloak 目前是 oidc 协议和 saml 协议,开源里面最靠谱的方案,其他的小作坊开源随时有可能就没人维护了
Casbin
2022-06-14 14:04:11 +08:00
@drupal 请联系 VX: dmVvcGF4 (base64) ,由官方技术团队提供支持
JamesMackerel
2022-06-14 14:51:58 +08:00
@jorneyr 可以表面上使用 apereo cas ,并且把那个 AuthenticationHandler 自定义一下,通过 RPC 去调用自己搞的另一个认证服务。自己开发这个认证服务去根据各个公司现有帐号体系的情况来进行登录的认证和权限信息收集之类的功能。

其实 apereo cas 这个东西确实很复杂,如果没有足够的技术能力和人力,不建议用这个鬼东西,如果再让我来一次,我可能会选择一些其他的更加简洁的开源项目去替代这个 apereo cas ,但是依然把认证的部分自定义。
JamesMackerel
2022-06-14 14:53:02 +08:00
另外建议一开始就把单点登出也考虑好怎么做,要不然到后面系统多了会很难搞。
dk7952638
2022-06-14 15:50:37 +08:00
keycloak 确实是 java 里认证技术的天花板,Casdoor 也不错,可惜属于 go 技术栈的
AS4694lAS4808
2022-06-14 18:17:32 +08:00
这种需要 A B C 三个系统配合修改来实现的吧?除非三个系统本身支持 cas
shuang
2022-06-15 00:22:13 +08:00
@JamesMackerel
apereo cas 真的是难用,太重量级了,好多功能用不上,定制化开发也比较难,有没有轻量级比较成熟的服务端推荐一下
cus
2022-06-15 07:27:39 +08:00
用 keycloak 吧
JamesMackerel
2022-06-15 15:59:52 +08:00
@shuang 按我的视角看来,定制开发 apereo 难点主要有以下几个:

1. 要对 spring 的依赖注入机制有相当的了解
2. 要对 thymeleaf 有一定了解
3. 如果需要深度地定制登录的流程,则需要对 webflow 有相当地了解,这一点是最难的

这个项目里有一堆 Java 喜欢的绕来绕去的操作,有一些肉眼可见的技术上的错误(不知道现在修复了没有),并且确实如你所说有一堆用不上的功能,虽然都是在编译期可插拔的但是对一个新手来说实在是容易让人眼花缭乱。不过当你需要提供多种认证协议的时候,可能 apereo cas 确实是比较好的方案。

在使用 apereo cas 之前,也曾经使用过 https://github.com/rbCAS/CASino ,不过看上去现在已经停止开发了。

之前看过一下 casbin 的论文,感觉他们的权限模型挺优秀的,简洁而且强大实用。他们的 SSO 实现似乎也支持多种认证协议,现在用的人好像渐渐多起来了,不过我没有具体尝试过这个项目,有兴趣的话你可以试试看。
JamesMackerel
2022-06-15 16:00:41 +08:00
@shuang 其实做了那么久 SSO ,我感觉国内搞这块的人是不是其实不太多……我从来没找到过什么论坛或者群聊是关于 SSO 这个主题的。
wely
2022-08-16 11:42:13 +08:00
ArkID 关注一下哈,支持插件化,可以自己开发,也有比较完善的文档,基于 python/django 的

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

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

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

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

© 2021 V2EX