开放给合作方的网站,如何验证用户身份?

2020-09-27 15:34:58 +08:00
 dream4ever

我们公司目前在和另一家公司合作开展业务,对方做的是在线学习平台,我方做的是在线电子书,现在不知道怎样和对方进行对接,所以来这里咨询一下。

目前规划的整体流程是这样:

  1. 对方平台用户在其平台上成功付费购买电子书之后,平台才会给用户显示我方网站上的电子书链接。
  2. 对方平台用户点击电子书链接,跳转到我方网站上。我方网站验证来源用户是否为对方平台用户,以及是否已购买所要阅读的电子书。
  3. 如果来源用户的确为对方平台用户,且已购买所要阅读的电子书,则向其展示电子书内容。
  4. 如果来源用户的确为对方平台用户,但没有购买所要阅读的电子书,则将该用户重定向至对方平台课程页面,课程页面上会有购买电子书的提示信息。
  5. 如果来源用户不是对方平台用户,那就说明是非法请求,直接丢掉。

其中需要说明的是,对方平台上每个用户的信息,包括其所购买的电子书,都由对方平台记录。

按这个流程来实施的话,我方网站要验证来源用户,具体的技术细节应该是怎样的?

我之前构思的一种方案,是对方在向我方网站跳转的 URL 中附带用户 ID 、图书编号及 JWT 。其中 JWT 由“用户 ID + 图书编号 + 用户 IP”生成。

然后我方网站调用对方的用户验证接口,将用户 ID 、图书编号、用户 IP 及 JWT 回传,由对方验证“用户 ID + 图书编号 + 用户 IP”的组合是否能够生成同样的 JWT,并验证该用户是否在其平台上购买了该图书。

但是这种方案将 JWT 在 URL 中明文传输,安全性是否欠妥?可是 GET 请求又不像 POST 请求那样能在 body 中附加信息,所以很是头疼。

最后,这种方案不合适的话,采用什么样的方案更合适?还望大家不吝赐教,谢谢先。

981 次点击
所在节点    前端开发
4 条回复
XiLingHost
2020-09-27 17:34:12 +08:00
oauth 进行对接用户不就好了,两边都维护一个用户系统,然后通过 oauth 来新建并关联用户,之后通过其他接口判断该用户是否实际拥有对应的书籍,传入的时候带 cookies
另外,就算按照你这个请求里带 jwt 的策略,只要是 https 的链接,就没有问题,传输层之内看到 sni 和 ip,看不到具体的链接信息的
dream4ever
2020-09-28 09:41:25 +08:00
@XiLingHost OAuth 的方案我也考虑过,当时觉得有些麻烦,就没考虑。

另外对方平台对应的域名没有部署 https,运行好些年了,用户体量也不小,我也是有点诧异。
XiLingHost
2020-09-29 09:29:01 +08:00
@dream4ever 没部署 https ?这也太离谱了吧,商业网站居然不上 ssl,这个就算是搞个 lets encrypt 的也好啊
dream4ever
2020-09-29 14:54:44 +08:00
@XiLingHost 据说每年都有数十万用户使用他们的平台呢,我也很纳闷为什么会做成这样。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/710959

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX