php - 想做一套多客户端统一登录授权系统,开放平台那种系统,大家帮忙看看我想的这两种方案有没有问题?
迷茫
迷茫 2017-04-11 09:48:44
[PHP讨论组]

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

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

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

方案1:

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

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

方案2:

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

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

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
伊谢尔伦

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号