• 请不要在回答技术问题时复制粘贴 AI 生成的内容
lingly02
V2EX  ›  程序员

有什么类似 casdoor 的开源认证系统推荐吗?

  •  1
     
  •   lingly02 · Aug 4, 2022 · 10215 views
    This topic created in 1554 days ago, the information mentioned may be changed or developed.
    一直想找一个开源认证平台,可以稍做改造后用于自己的项目。不想重复造轮子。 初步研究了一下前几天论坛里发的 casdoor,发现还是有一些问题,想找下有没有更好的。

    casdoor 的主要问题有(只是粗略看了一下,下面描述如有错误,欢迎批评指正):
    1. 代码编写比较随意,几乎没有注释,大部分代码没有单元测试,不利于二次开发。
    2. 代码扩展性一般,很多内容是硬编码的。比如想增加一个 sms 提供商,至少需要修改 go-sms-sender, casdoor 后端,casdoor Web 端三处代码。
    3. 数据模型极不合理,尤其是主键大量使用组合索引,关联表也不使用外键,而是直接使用字符串字段存储 name ,导致修改一个主表,还需要 update 相关子表。不知道这是遵循一种什么样的建模理论。
    4. 组织没有层次结构,不能满足大部分企业应用需求。
    5. 为什么一个认证平台要加入商品与支付功能?
    57 replies  •  2022-10-03 22:35:34 +08:00
    HAWCat
    HAWCat
    Aug 4, 2022❤️1
    1
    Authelia
    ersic
    ersic
    Aug 4, 2022
    2
    Casdoor 是商业产品吧,开源的是 Casbin 。
    lingly02
    lingly02
    OP
    Aug 4, 2022
    3
    lingly02
    lingly02
    OP
    Aug 4, 2022
    4
    @HAWCat 研究一下
    ihipop
    ihipop
    Aug 4, 2022 via Android
    5
    不使用外键也没啥稀奇的,很多都这样,靠业务和事物保证一致。
    DoveAz
    DoveAz
    Aug 4, 2022
    6
    不使用外键 是为了性能吧,毕竟这里面的信息不怎么修改,基本都是查数据,存起来查自然要快许多
    lingly02
    lingly02
    OP
    Aug 4, 2022
    7
    @ihipop 不使用数据库层面外键约束的系统是很多,但一般子表也会存储父表的主键。 但它是子表没有存储父表的主键。比如 org 表的主键是"owner,name"(组合主键), user 是属于一个 org 的,但它只定义了一个 owner 字段,并且这个 owner 字段的内容,存放的是 org 表的 name 字段值!
    lingly02
    lingly02
    OP
    Aug 4, 2022
    8
    @HAWCat 这个似乎不支持短信验证码登录?
    lingly02
    lingly02
    OP
    Aug 4, 2022❤️1
    9
    @DoveAz 另外我一向不同意因为性能原因就不使用数据库的主外键约束。绝大部分非互联网应用都不需要先考虑这个问题。使用关系型数据库就是为了保证 ACID 。对于一个认证系统,数据的一致性和完整性才应该是优先考虑的。
    Herry001
    Herry001
    Aug 4, 2022❤️1
    10
    keycloak
    相比于 keycloak ,casdoor 感觉更像是个人作品……
    Oktfolio
    Oktfolio
    Aug 4, 2022❤️1
    11
    我想造轮子,目前进度「新建文件夹」
    QuinceyWu
    QuinceyWu
    Aug 4, 2022
    13
    有没有支持 LDAP 的轻量的开源认证系统推荐啊
    lingly02
    lingly02
    OP
    Aug 4, 2022
    14
    @QuinceyWu 上面说的几种,除了 ldap ,其他都支持 ldap 吧
    lingly02
    lingly02
    OP
    Aug 4, 2022
    15
    除了 logto, 写错了;-)!
    lovepocky
    lovepocky
    Aug 4, 2022 via iPhone
    16
    @lingly02 这个我也发现了,明显不合理
    joesonw
    joesonw
    Aug 4, 2022 via iPhone
    17
    ory.sh 下的产品
    adoal
    adoal
    Aug 4, 2022
    18
    Apereo CAS ,但是贴合国情的外围功能基本没有,二开的工作量比较多
    runo
    runo
    Aug 4, 2022 via iPhone
    20
    @QuinceyWu openldap
    Ayanokouji
    Ayanokouji
    Aug 4, 2022
    21
    spring authorization server ?
    kappa
    kappa
    Aug 4, 2022
    22
    对于 casbin 的印象只有定期在各大站点发推广文,另一个类似操作的也是国人作品 go-zero
    HAWCat
    HAWCat
    Aug 4, 2022
    23
    @lingly02 目前没有 SMS 实现,不过可以先暂时用 Duo Mobile 来配合使用吧,这个可以推送登录请求
    ohoh
    ohoh
    Aug 4, 2022
    24
    keycloak
    FakerLeung
    FakerLeung
    Aug 4, 2022
    25
    好奇,像接入了这种统一认证,那么每个 App 怎么去验证是否登录呢?那还需要存 user 的什么信息呢?
    mogita
    mogita
    Aug 4, 2022 via iPhone
    26
    Keycloak 很稳
    ackfin01
    ackfin01
    Aug 4, 2022
    27
    @FakerLeung 应用肯定要存用户信息啊 只不过认证都是在 sso 系统
    FakerLeung
    FakerLeung
    Aug 4, 2022
    28
    @ackfin01 #27
    能讲下具体点的流程吗?还是不太懂。😂
    demonzoo
    demonzoo
    Aug 4, 2022
    29
    @ackfin01 不,理想情况下是应用并不需要存用户信息,所有跟用户相关的信息都是从 identity provider 那边拿到的。这样才能方便的做到应用间的信息共享,解决信息孤岛问题
    logto
    logto
    Aug 4, 2022
    30
    @lingly02 #14
    @lovepocky #16
    感谢两位关注。LDAP 已经在我们的 roadmap 里啦: https://github.com/orgs/logto-io/projects/5
    如果大家感兴趣(等不及),也欢迎贡献 LDAP connector 哈。我们也有相关教程: https://docs.logto.io/zh-cn/docs/recipes/create-your-connector/
    clickhouse
    clickhouse
    Aug 4, 2022
    31
    Keycloak+1
    realpg
    realpg
    Aug 4, 2022
    32
    @Oktfolio #11
    .gitignore 都没写么
    Aloento
    Aloento
    Aug 4, 2022
    33
    identityserver 很推荐,我自己也在用
    Aloento
    Aloento
    Aug 4, 2022
    34
    @logto 用 JS 写的吗,真的大丈夫?
    C603H6r18Q1mSP9N
    C603H6r18Q1mSP9N
    Aug 4, 2022
    35
    @logto 好赞,请问 vue 可以适配 uniapp 吗?
    qfdk
    qfdk
    PRO
    Aug 4, 2022 via iPhone
    36
    自己写过一 js 的 不知道有兴趣么
    Casbin
    Casbin
    PRO
    Aug 4, 2022
    37
    @lingly02 你好,

    1. 由于功能特性、性能方面的原因,现在需要修改多个位置代码,未来会考虑如何简化 SMS 提供商的开发
    2. Casdoor 本身设计不依赖太多 SQL 提供的功能,方便未来扩展非 SQL 的支持,所以目前没有使用外键请见谅,未来有可能加入
    3. 层次结构未来会添加
    idblife
    idblife
    Aug 4, 2022
    38
    keycloak
    demonzoo
    demonzoo
    Aug 4, 2022
    39
    @Aloento Logto OIDC 的实现是 node.js 代码,运行在 server 端,我没觉得 js 语言本身有什么问题
    wangxiaoaer
    wangxiaoaer
    Aug 4, 2022
    40
    @logto #30 看了下,挺不错,但似乎暂不支持每个应用定制图标、设置不同的连接器?
    waltcow
    waltcow
    Aug 5, 2022❤️1
    42
    @Casbin 用了一段时间来反馈一下
    1. 代码质量非常堪忧,简单的 typo 我都发现了两处了 https://github.com/casdoor/casdoor/pulls?q=typo
    2. sql 数据模型极不合理,组合主键为业务代理很多不必要的麻烦
    logto
    logto
    Aug 5, 2022
    43
    @Aloento #34 请问使用 Node.js 的话会有什么问题呢,愿闻其详
    @shanghai1998 #35 这个我们还没尝试过哈。如果你在使用过程中遇到问题的话欢迎随时和我们联系~
    @wangxiaoaer #40 嗯嗯,目前技术层面是支持的,就是还没有产品化,我们还在研究当中。欢迎加入 discord ,我们会随时 post 新动态~
    wangxiaoaer
    wangxiaoaer
    Aug 5, 2022
    44
    @logto 问题反馈是以 github issue 为主吗?
    logto
    logto
    Aug 5, 2022
    45
    @wangxiaoaer #44 discussion, issues, discord 都可以的哈。我们就不占用 OP 的帖子了~
    lingly02
    lingly02
    OP
    Aug 5, 2022
    46
    @Casbin 感谢回作者回复,希望 casdoor 能越来越完善,毕竟 casbin 这一套权限管理框架的理念还是很不错的。
    PS:很多开源项目一开始的实现也不是很优雅,后面随着逐渐的重构就越来越好。
    Aloento
    Aloento
    Aug 5, 2022
    47
    @logto 鄙人不才,只是如果我自己做相关产品的话不会使用 JS ,您就当我在瞎扯就好
    wely
    wely
    Aug 16, 2022
    48
    ArkID 应该能满足你的需求, 可以看看
    sekfung
    sekfung
    Sep 24, 2022❤️1
    49
    @waltcow 真的不能再同意了。我用的时间也比较长了,代码质量真的非常堪忧,现在社区维护的主力还是一群大学生。发版速度简直令人发指,而且经常有数据库字段不兼容的变动,还不能随便升级,动不动就要手动改数据库,前端后端 typo ,硬编码的地方随处可见,错误随便定义,返回给前端根本做不了国际化,这一点真的无法忍受,防暴力破解也没有,扩展性极差,大量的 if else 。除非是个人随便玩玩,否则不建议在生产环境部署
    waltcow
    waltcow
    Sep 26, 2022
    50
    @logto nodejs 和 CloudNative 貌似有点格格不入的样子
    waltcow
    waltcow
    Sep 26, 2022
    51
    @sekfung 前端 控制台 和 sso 登录用的 web 竟然不做入口区分,前端加载慢的不行。 这东西感觉就是毕设玩具一样,哪有人敢拿来商用。
    logto
    logto
    Sep 26, 2022
    52
    @waltcow #50 愿闻其详
    waltcow
    waltcow
    Sep 26, 2022
    53
    @logto 也用了一段时间的 beta 版本,说一下感受吧

    1. 代码很多 ts 的高级用法,在我看来感觉为了单纯满足类型检查而耗费的时间比业务逻辑还要多
    2. 分了很多 packages ,在工程管理依赖上新手入门可能遇到比较多的问题
    3. 在生产环境中使用没有多机部署的方案,在保证可用性上没有太多的保障


    优点:
    1. 社区还是比较热情的,一些疑问 /bug/feature 都会有人在 issue/discord 中回答
    2. all in js , 对于前端想跨界搞全栈开源的人来说提供了工程化实践的 best practise
    sekfung
    sekfung
    Sep 26, 2022 via iPhone
    54
    @waltcow 唉 一开始没仔细调研 加上一波轰炸的宣传 对他印象比较深刻 我们一开始用 keycloak 的 后来觉得太重了而且本土化也不够好 casdoor 一开始用得挺好的 开箱即用 但是要二开的时候 简直痛不欲生 刚推倒完 api 和错误返回 返回的 api 数据格式都没有完全统一的 总的来说 国内有开源的 sso 方案还是挺好的 我也支持开源 casdoor 适合那些开箱即用的用户吧 要二开的话慎重再慎重
    logto
    logto
    Sep 27, 2022
    55
    @waltcow #53 谢谢您的肯定!
    回应一下感受:
    1. 类型都是开发过程中的一些约束,为了更好的代码质量。我们在类型上花的时间并不算多哈,基本都是顺手写上了。
    2. 我们用的是通用的 monorepo 的实践,之前写过一篇文章 https://www.v2ex.com/t/871408 有兴趣可以看看。
    3. 提供 HA 相关的配置文件在我们的 roadmap 里面了,也有社区的小伙伴自己成功部署了,可以交流交流~


    @sekfung #54 可以试试我们的产品,有问题欢迎随时沟通 :-)
    waltcow
    waltcow
    Sep 28, 2022
    56
    @sekfung https://github.com/zitadel/zitadel 最近看了下这个,一些国内平台的 connector 可能暂时还没有,如果二开定制难度应该还好,代码扫了下质量相当 OK
    sekfung
    sekfung
    Oct 3, 2022
    57
    @waltcow 这我之前看过,好像不支持 mysql...连 PG 都是 beta 阶段...
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4925 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 96ms · UTC 08:52 · PVG 16:52 · LAX 00:52 · JFK 03:52
    ♥ Do have faith in what you're doing.