cdk8s / tkey-issues

TKey 统一 Issues,方便大家检索
0 stars 0 forks source link

学习tkey过程,目前遇到的疑惑 #5

Closed fallowu closed 4 years ago

fallowu commented 4 years ago

你好,目前在做一个Oauth2 SSO单点登录学习与使用。有几个问题想咨询下: 1.目前tkey的Java REST API 客户端是只对授权码模式的一个示例吗? 2.前后端完全分离,想使用密码模式,是要自己额外封装一个java client吗,要不然只能直接请求server端了? 3.(前后端分离,有app)针对多个应用,针对单点退出,单个应用退出,所有都退出,感觉添加api网关感觉太大了,想了解下一下两种方式可否?

多谢~~

fallowu commented 4 years ago

另外针对VUE版本的前端发布计划是否已经安排?

cdk8s-zelda commented 4 years ago

感谢认真提问!

第一个问题

  1. REST API 确实目前只有授权码模式,密码模式用于中小企业内部系统确实挺方便,虽然我不是很赞同,但是我可以封装一个。但是预计要 12月中旬。因为我下周要发布一个新的开源项目出来,最近在收尾这个,希望到时候对你也有帮助,你可以关注下我的公众号。
  2. 如果急着开发,那思路建议一定要经过 server 端,这样才能方便管理。

第二个问题

  1. 不用 API 网关的话,要真正的单点退出,也就是所有业务系统一起退出,这成本比较高,需要所有业务系统都跟 TKey 服务端有通信,可以是 MQ,RPC 等等方式,但是终归是有消耗,需要评估值不值得付出这样的成本。
  2. 先说 b 点:不推荐客户端直连 TKey 的 Redis。除非是小公司,开发团队人员少。不然假设团队人员多,业务系统多,最后谁不小心搞垮 TKey 的服务都会是个问题。这不是技术层面的问题,而是从管理角度考虑。需要看你们的开发人员的质量情况。
  3. a 点的假设感觉是建立在 b 点的基础上。 假设所有业务系统的 redis 都是互不干扰的,感觉 a 点这个说法不会成立,因为你管不到其他人的 redis,除非又回到刚刚说的,你们有各自的通信在保持。 但是,假设你确实是建立在 b 点的,因为公司小,业务都是同一个 redis。那可以换个玩法,有一个专门的 key 是 userId,value 是各个业务系统的 token 集合,只要有一个退出了,就可以通过这个 key 联系到所有 token,然后进行删除,这个确实可以,并且并且不需要通信。小公司可以,中大型公司不推荐,不然出问题了很容易扯皮。很多时候技术不是主要原因,要考虑组织结构和管理的,不能单独考虑技术。

第三个问题

VUE 版本原本要有一个人帮我的,但是他暂时没空,预计要等到春节左右。

fallowu commented 4 years ago

感谢你的回答,大有益处。

第一个问题

  1. REST API 确实目前只有授权码模式,密码模式用于中小企业内部系统确实挺方便,虽然我不是很赞同,但是我可以封装一个。但是预计要 12月中旬。因为我下周要发布一个新的开源项目出来,最近在收尾这个,希望到时候对你也有帮助,你可以关注下我的公众号。
  2. 如果急着开发,那思路建议一定要经过 server 端,这样才能方便管理。

因为某些应用有手机端小程序与APP问题,所以这部分应用使用用户名密码最为方便。

第二个问题

多谢你的建议,看了你的回答后,考虑到互联网部署,单点退出还是采用较为安全方式的实现,避免安全事故。

cdk8s-zelda commented 4 years ago

@fallowu 这对密码模式我进行了补充,不需要大改: https://github.com/cdk8s/tkey-docs/tree/master/faq#%E5%AF%86%E7%A0%81%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%B8%B8%E7%94%A8%E5%9C%BA%E6%99%AF%E5%88%86%E6%9E%90

fallowu commented 4 years ago

@fallowu 这对密码模式我进行了补充,不需要大改: https://github.com/cdk8s/tkey-docs/tree/master/faq#%E5%AF%86%E7%A0%81%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%B8%B8%E7%94%A8%E5%9C%BA%E6%99%AF%E5%88%86%E6%9E%90

感谢补充更新。

仔细看了下密码模式的应用场景,大致请求流程如下: 1234 还有一种方式是,直接去业务系统请求登录, 12345

以上基于无API网关,这两种登录方式的差别在于:

1.前端登录请求对象为业务系统/Tkey Server系统。 2.请求业务系统登录步骤多了一次中转,但对前端隐藏了Tkey Server系统的存在。

在没有困难的情况下,可能我更多的会选择后边一种方式,这个对前端而言,只有一个业务后端对接。