App 里用第三方登录,在服务器端怎么做验证?

2015-02-11 14:02:23 +08:00
 fengchang

RT,App里用友盟的SDK做第三方登录,支持微博,微信,QQ,豆瓣等等,获取到uid和access token传给我。

我在服务端想验证uid的真伪,友盟没有服务端的接口,要自己一家一家做觉得有点麻烦,有没有开源的实现?

26227 次点击
所在节点    程序员
26 条回复
hging
2015-02-11 14:13:08 +08:00
没有. 验证他干啥....传给你什么就是什么就认为已经登录过就好了啊. 验证是APP端做的
fengchang
2015-02-11 14:35:26 +08:00
@hging 当然是为了安全,如果不做验证的话,别人只要修改客户端或者HTTP连接中的uid就可以冒充其它用户了
kslr
2015-02-11 14:38:57 +08:00
你需要了解Oath2
qiayue
2015-02-11 14:39:12 +08:00
@fengchang 所以你的 api 本身需要对信息做验证,以确保中途被人截获的请求修改参数是无效的
如果真的想要验证 uid 那么只能是一家一家去做
kslr
2015-02-11 14:41:24 +08:00
打错了,oauth2 accesstoken本身就是一个令牌
hyzjshwo
2015-02-11 14:42:10 +08:00
那是你和app的事了,和第三方没关系,第三方只是告诉你的app:ok ,验证通过,你的uid是xxx,头像是xxx,性别:o
fengchang
2015-02-11 14:58:14 +08:00
@kslr 我了解一点OAuth2,在这里的access token的Resource server是第三方服务器,拿着这个去转发新浪微博或者发朋友圈是安全的,因为Resource server可以向Authorization server验证token。但是对于我的服务器来说,如果不对token做验证,那谈何安全?
kslr
2015-02-11 15:53:54 +08:00
@fengchang 在你的APP上也做Token
fengchang
2015-02-11 16:31:09 +08:00
@kslr 算了,感觉你也没做过。我的App里当然有自己的token。我自己系统的账号可以在数据库里验证密码,第三方的系统只能请求别人的服务器做验证。第三方平台也都提供了这个接口,比如
http://open.weibo.com/wiki/Oauth2/get_token_info
http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html#.E9.99.84.EF.BC.9A.E6.A3.80.E9.AA.8C.E6.8E.88.E6.9D.83.E5.87.AD.E8.AF.81.EF.BC.88access_token.EF.BC.89.E6.98.AF.E5.90.A6.E6.9C.89.E6.95.88
我只想找个集成好的实现以免重复写代码,没想到这么多人跳出来告诉我不需要验证,现在程序员的安全意识真是呵呵了。
jeansfish
2015-02-11 16:48:19 +08:00
那你要找集成在服务器的oauth实现
yuezhimsolo
2015-02-11 17:00:31 +08:00
我靠,文档你不看,github你不查,开源中国你不读。。。。。
fengchang
2015-02-11 17:37:31 +08:00
@yuezhimsolo 查了,没找到,能给个链接吗?
jsq2627
2015-02-11 20:29:04 +08:00
自己实现一下吧 = = 第三方登录总共也就那么几家而已。
服务端语言是啥?
hahastudio
2015-02-11 20:54:11 +08:00
原来还有人不验证= =自己玩大概不用验证,做成产品就得有了吧= =

没用过友盟,没用过国产第三方登录服务= =
就简单地搜了一下,看到了一些人的学习笔记,例如:
http://blog.csdn.net/arthurchenjs/article/details/6567563

感觉你就别想着找开源实现了= =自己做吧= =
pubby
2015-02-11 22:02:53 +08:00
后台拿access_token再去获取一下用户信息比对一下

主要也就QQ 微信 微博 , 主要还是微信和QQ, 微博登录数差了个数量级,其它的估计量更小了


另外提一下:
QQ那个有点坑,你拿app上得到access_token在服务端取信息,有一定概率拿到的用户信息是"qzuser",没头像,没信息

猜测是因为你app和服务器ip不同,导致连接了qq不同的服务器,而qq集群间数据同步方面偶尔抽风,瞎猜,反正我没解决 -_- ,这种情况只好直接拿APP得到的userinfo来用。
046569
2015-02-11 22:07:47 +08:00
@pubby
若用户拒绝授权,你就会拿到 qzuser .
pubby
2015-02-11 22:27:22 +08:00
@046569 授权了,在APP上能拿到
jeansfish
2015-02-11 22:30:18 +08:00
@fengchang

https://github.com/jeansfish/RFC6749.zh-cn

打个广告。服务器自己实现?
gongweixin1990
2015-02-12 11:36:37 +08:00
没什么验证的必要吧,uid和accessToken都是QQ、微博那边传过来的,你那边要验证就只能自己又重新在微博那边走一遍Oauth
fengchang
2015-02-12 21:22:49 +08:00
@gongweixin1990 怎么会没必要呢?
比如某个大V用微博登录了知乎。我上微博看一下大V的页面就能拿到大V的uid,然后再自己编造一个accessToken,发给知乎的服务器,知乎的服务器如果不再去微博验证accessToken,相信了这个uid,这样我不就登录到他的知乎号上了吗?

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

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

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

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

© 2021 V2EX