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

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

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

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

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

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

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

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

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

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

相关文章

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

  1. oauth 进行对接用户不就好了,两边都维护一个用户系统,然后通过 oauth 来新建并关联用户,之后通过其他接口判断该用户是否实际拥有对应的书籍,传入的时候带 cookies
    另外,就算按照你这个请求里带 jwt 的策略,只要是 https 的链接,就没有问题,传输层之内看到 sni 和 ip,看不到具体的链接信息的

  2. @XiLingHost OAuth 的方案我也考虑过,当时觉得有些麻烦,就没考虑。

    另外对方平台对应的域名没有部署 https,运行好些年了,用户体量也不小,我也是有点诧异。

  3. @dream4ever 没部署 https ?这也太离谱了吧,商业网站居然不上 ssl,这个就算是搞个 lets encrypt 的也好啊

  4. @XiLingHost 据说每年都有数十万用户使用他们的平台呢,我也很纳闷为什么会做成这样。

发表评论

电子邮件地址不会被公开。 必填项已用*标注