这两天刚好在做这个三方的登录问题。具体需求如下(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平台
。
目前比较简单的解决方式是轮询或是关键接口单独验证。