素材牛VIP会员
想做一套多客户端统一登录授权系统,开放平台那种系统,大家帮忙看看我想的这两种方案有没有问题?
 lx***rx  分类:Python  人气:874  回帖:1  发布于6年前 收藏

问题:
想做一个统一的用户授权管理中心,使第三方的app、网站可以接入这个管理中心的账户体系。
有点类似某些应用可以点微博注册成网站会员,然后点击微博登录就行,不用再到该网站申请一个帐号。

我们提供给第三方接入方案,(我们的)用户授权后,我们允许用户在第三方应用上登录。另外,后续想对权限进行比较细致的管理。

为了安全起见,相对用户登录行为的验证做细致一点,防止用户信息被篡改造成损失。
另外,系统可能不会走SSL

方案1:

使用oauth2.0:
手机客户端打开用户认证服务器登录网页,登陆后截取返回的code,手机客户端拿code上传给后端,后端通过code到认证服务器拿到access_token,再获取用户信息返回给手机客户端。(参照的http://blog.csdn.net/seccloud...)

感觉这样比较安全,比较什么有价值的信息都没有暴露给客户端,但是每次登录后端都要请求两次api才能拿到用户信息,资源开销比较大。

方案2:

手机客户端通过一套定制的SDK登录(SDK继承了到认证服务器登录的全部逻辑),登录成功后SDK会把关键用户信息(ID)和会话过程产生的唯一ID返回给客户端作为登录依据,
客户端把这些信息上传给后端,后端再请求认证服务器,如果认证服务器证实这个用户登陆有效就可以算是有效的会话了。

登陆进去拉取用户信息等操作可以再行处理,对于不需要额信息的客户端来说非常节约资源。
这样的话后端验证很简单,
担心的问题是密钥和用来验证的其他用户信息被窃听截取后,攻击者抢先登录,造成用户损失

没有做过类似的系统,大家帮忙看看我的思路有没有问题?这些方案有哪些漏洞?有没有更合理的方案?

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv4 码徒
阁***起 其它 6年前#1

我们这是用1。。。APP在认证中心成功登录 获取token,APP发送token到后端获取uid等,之后的请求都要有uid、token等...

第2种太过暴露。。。第一种稍微好些

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取