Jmix 单点登录

请问Jmix 有没有相应的组件搭建 单点登录呢?之前CUBA有idp,Jmix有没有类似的组件呢

JMix 目前没有类似的组件,Jmix 最大的变化之一是不再重复造轮子 :wink:,所以我猜Jmix 应该可以很方便地使用 Spring 提供 Oauth2 相关功能。 我也在英文论坛咨询了一下。看看开发团队怎么答复。

Konstantin 对此有回复,简单来说关于 Jmix 中的 IDP 方案已经在计划中,目前还没有确定具体实现方式,有任何想法和建议可以跟帖讨论。

我提点个人建议吧:

1.之前CUBA中的idp,sp,要获取token信息,必须要先去idp获取一个ticket,然后再根据ticket获取token信息,每个ticket 只能使用一次,并且每个sp都要单独为自己这个服务去获取ticket 进而获取token信息.这样就使得前后端的开发异常复杂.建议通过一个token就可以调用所有的sp,通过授权去控制能否调用某个sp中的接口.

2.idp,sp必须要有相同的user,这点感觉没必要吧,只需要保证idp中有完整的user就行了,鉴权,授权都放到idp处理,各个sp只是类似于 微服务概念,更好划分服务范围,同时起到分摊服务压力的作用.

3.可以考虑允许自己配置这些token信息存储到其他服务,比如redis

以上只是自己的一些想法,如有不妥可以讨论.

  1. CUBA 的 IDP 的单点登录过程类似于 oauth2 的授权码模式,这也是大部分第三方身份认证服务支持的认证模式,比如 Twitter\Github。你说的 ticket 即是 “授权码”。 通过一个 token 就调用所有sp的服务也是可以的,这是 oauth2 的 密码模式 模式,这种模式不用于实现单点登录。 参考这里:http://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html
  2. 有道理,但是这种方式适用于 SP 是纯服务方式, 而 CUBA 的 SP 是一个应用程序,不光需要身份信息,还需要用户在系统里进行各种功能操作。大部分的单点系统也是这样做的,IDP 和 SP 需要有相同的用户信息。
  3. 可通过扩展 IdpSessionStoreBean 来实现自己的 session 存储机制。