V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
drupal
V2EX  ›  程序员

单点登录问题

  •  
  •   drupal · 2022-06-14 09:20:59 +08:00 · 3631 次点击
    这是一个创建于 884 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    其实 apereo cas 这个东西确实很复杂,如果没有足够的技术能力和人力,不建议用这个鬼东西,如果再让我来一次,我可能会选择一些其他的更加简洁的开源项目去替代这个 apereo cas ,但是依然把认证的部分自定义。
    JamesMackerel
        12
    JamesMackerel  
       2022-06-14 14:53:02 +08:00
    另外建议一开始就把单点登出也考虑好怎么做,要不然到后面系统多了会很难搞。
    dk7952638
        13
    dk7952638  
       2022-06-14 15:50:37 +08:00
    keycloak 确实是 java 里认证技术的天花板,Casdoor 也不错,可惜属于 go 技术栈的
    AS4694lAS4808
        14
    AS4694lAS4808  
       2022-06-14 18:17:32 +08:00
    这种需要 A B C 三个系统配合修改来实现的吧?除非三个系统本身支持 cas
    shuang
        15
    shuang  
       2022-06-15 00:22:13 +08:00
    @JamesMackerel
    apereo cas 真的是难用,太重量级了,好多功能用不上,定制化开发也比较难,有没有轻量级比较成熟的服务端推荐一下
    cus
        16
    cus  
       2022-06-15 07:27:39 +08:00 via iPhone
    用 keycloak 吧
    JamesMackerel
        17
    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
        18
    JamesMackerel  
       2022-06-15 16:00:41 +08:00
    @shuang 其实做了那么久 SSO ,我感觉国内搞这块的人是不是其实不太多……我从来没找到过什么论坛或者群聊是关于 SSO 这个主题的。
    wely
        19
    wely  
       2022-08-16 11:42:13 +08:00
    ArkID 关注一下哈,支持插件化,可以自己开发,也有比较完善的文档,基于 python/django 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3441 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 00:05 · PVG 08:05 · LAX 16:05 · JFK 19:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.