这两天刚好在做这个三方的登录问题。具体需求如下(A表示自己的系统,B表示三方系统):
- 需要使用
B平台账号登录A平台。 A平台可以使用自己的账号登录A平台。A平台只能通过B平台的验证接口来验证B平台的账号是否合规。- 使用场景是在
B平台中。
很典型的三方账号登录方式,不过由于都是内部登录,所以并没有搭建完善的三方登录系统。
比较符合常规的方式是与B前端做关联,在A后端验证后返回B前端验证结果与生成的通行码,随后按照一般访问流程继续。
不过由于A前端是通过A后端接口权限的方式做的访问跳转,所以可以采用以下设计:
- 在
A平台提供三方登录接口,登录时需要将B平台账号的三方验证信息传递进来。 - 使用
B平台的登录验证接口,将B平台验证成功后的账号转换成A平台的账号。这里由于是临时登录,并不需要创建账号,所以将创建的A平台账号交由登录缓存处理,不添加至数据库(没有这个需求)。 - 登录缓存数据以将
登录IP作为缓存关键字,便于短时间免登录验证。 - 在请求响应数据中,添加重定向,指向跳转到的
A平台页面,这样就能实现无缝访问。
这样做可以只修改A后端,不改动B前端,减少对接工作量。
不过这样的设计有一个很大的弊端,就是当B平台账号退出或是其他原因无法使用,但A平台的登录缓存未失效时,此IP依旧可以访问A平台。
目前比较简单的解决方式是轮询或是关键接口单独验证。