V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wangxiaoaer
V2EX  ›  问与答

请教 Casdoor 的几个问题

  •  
  •   wangxiaoaer · 2022-05-13 16:06:10 +08:00 · 1173 次点击
    这是一个创建于 704 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前阵子看到 Casdoor 这个产品在 V2 推广,就试了试,中间有些疑问,本来想去 github 的 issue 提问的,但是看了下目前 open 的 issue 基本都是机器人回复,感觉意义不大,所以发到这里。

    1 CAS 自身的登陆页面(应该算是 app-built-in 这个应用)按照文档所说默认属于 built-in 组织,通过这种途径进去的用户都具备管理员权限,是否意味着如果这个 app-built-in 这个应用启用了第三方登录,那任意第三方登陆进来的用户都是管理员?

    2 针对多个应用,假设名字 A 和 B ,二者都启用了 github 登录,并且开启了会话保持。应用 A 和 B 有各自的登录页,通过 clientID 区分( https://casdoor.org/zh/docs/basic/core-concepts#%E7%99%BB%E5%BD%95-url )。经测试,每次访问应用的登录页都会重新跟 GitHub 进行一次完整的 OAuth2 交互。
    大体是这个流程:

    应用 A----应用 A 登录页----GitHub 登录---调用 Casdoor 回调----调用应用 A 回调
    应用 B----应用 B 登录页----GitHub 登录---调用 Casdoor 回调----调用应用 B 回调

    这个按照个人理解,第一次登陆后应该保存用户状态,后面再访问,直接跳回对应的应用就行了。类似这样:

    应用 A----应用 A 登录页----GitHub 登录---调用 Casdoor 回调----调用应用 A 回调
    应用 B----应用 B 登录页----(检测到已登录)----调用应用 B 回调

    不知道这个是基于什么考虑?因为按照目前的流程,假如由于某些原因,github 用户状态丢失,那么用户在已经通过应用 A 登陆了 casdoor 的情况下,再访问应用 B 的时候还需要跳转到 GitHub 输入用户名密码,感觉这脱离了 SSO 的原意。


    有没有用过的?
    8 条回复    2022-09-08 14:24:29 +08:00
    wangxiaoaer
        1
    wangxiaoaer  
    OP
       2022-05-13 16:06:33 +08:00
    Casbin
        2
    Casbin  
       2022-05-23 21:59:54 +08:00
    @wangxiaoaer

    1. 可以把 app-built-in 的注册关闭,这样其他用户就注册不进来了,不论什么途径;

    2. 可以设置应用打开“保持会话”,这样同一个组织下的应用(比如 A 和 B ),在 A 登录后,Casdoor 保留会话,在 B 应用登录时会自动显示要不要通过已有会话快速登录。
    wangxiaoaer
        3
    wangxiaoaer  
    OP
       2022-05-25 16:15:31 +08:00 via iPhone
    @Casbin 1 说的是登录,不是说注册,即使关闭了 built 应用的注册,但是仍然可以登录啊。
    Casbin
        4
    Casbin  
       2022-05-25 19:52:29 +08:00
    @wangxiaoaer OAuth 登录的时候,如果账号不存在,则尝试自动注册,注册时应该会过是否可以注册的检测,如果这里有 bug ,可以报到 github
    ackfin01
        5
    ackfin01  
       2022-09-08 11:50:09 +08:00
    @Casbin 关于 casdoor 的使用有一点小疑问:

    有两个子应用 A 和 B ,各自有用户系统,现在想整合到 casdoor 。但是有以下问题:

    - A 和 B 应用的密码加密算法可能不同
    - A 和 B 应用有重名用户
    - B 应用的登录方式可能有所不同,存在父账号,子账号比较复杂的情况

    现在想问一下 casdoor 是否支持将用户分成不同的域,在不同的域上实现不同的密码加密算法,使用域来区分重名用户和登录方式的差异?

    或者有其他更好的方式吗?
    wangxiaoaer
        6
    wangxiaoaer  
    OP
       2022-09-08 13:53:45 +08:00
    @ackfin01 如果 A 和 B 都接入到了 casdoor 的话,那么 A 和 B 不再需要验证密码,因为验证密码属于“用户名密码”方式,验证这个动作已经由 casdoord 接管了,至于 casdoor 能否使用现成的用户表并基于对应表里用户密码加密算法进行验证,就不确定了。但我不估计不太乐观。
    ackfin01
        7
    ackfin01  
       2022-09-08 14:04:25 +08:00
    @wangxiaoaer 针对已有应用接入 sso 系统,用户这块是一般是怎么处理的
    wangxiaoaer
        8
    wangxiaoaer  
    OP
       2022-09-08 14:24:29 +08:00
    @ackfin01 一般情况下接入 SSO 后跳转到 A 和 B 后,跳转到 A 和 B 后需要验证用户名密码绑定下原有用户,绑定成功后,A 和 B 原系统的用户、密码有关的信息就可以删掉了。

    有的 SSO 自带用户,比如微信、QQ 等。 有的 SSO 不带用户,比如自建的 casdoor 这种,所以可能要用户 A 和 B 的用户先到 CASdoor 重新注册下。不过也可以考虑把 A 或者 B 的用户名密码直接导入到 casdoor ,如果其中某一个的密码加密方式跟 casdoor 一致的话。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3266 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:27 · PVG 21:27 · LAX 06:27 · JFK 09:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.