我要做phonegap的应用。。。但是用户登录这块我始终搞不清。首先用户输入用户名和密码。然后去后端验证。。后端发回一个access token。然后本地存储这个access token。然后用户就可以一直登入进应用里。。。这是最简单的一个验证流程。但是如果access token被人拿走了。。。那么他就等于拥有你的用户账号。。。所以一般来说access token都是有过期时间的。。。生命周期短。。。但是没有办法一直让用户重复输入用户名和密码。。。这样refresh token的东西就出来了。这是一个生命周期长的token他的作用是一旦access token过期可以用它来重新获取access token。。但是这里就出现了一个问题。。。google的验证是用refresh token重新获取access token的时候 client id 和 client secret也是需要提供的。。。可是对于phonegap的应用来讲。。。如果这些都本地保存。。。那么他们都有可能和access token一样被人盗走。。。既然是这样= =那是不是对于phonegap的应用来说。。。这些步骤都没有任何意义?。。。我有点头晕。。请大家指点一下。。。谢谢 顺带。。。我的应用也不是提供api服务的= =我真的有必要用oauth2的东西吗。。。感觉我好想走错了方向。。。事实上我只是要phonegap 验证用户罢了。。。求好方法。。。
1
belin520 2015-03-22 16:40:19 +08:00 via Android
这排版,句号不是这么用的
|
2
puncsky 2015-03-22 16:57:34 +08:00
OAuth2 没有看上去那么简单,我不是特别的懂,但是可以说两句。
本质上来讲,**传统的 Login with Username/Password and create a stateful session with Cookies 的机制并不完美,它并没有考虑到 Client 可能是不可完全信任的**: 1. 无法安全地处理好 Clients 的授权粒度(Authorization with granularity for clients)的问题。 2. Clients 会知道用户的 username/password 而**OAuth 2.0 解决了对 Client 的信任问题** 1. User/Client/Authority 不同层级上的不同组合,达到更有粒度地控制对资源的访问 2. username/password 与 client 的分离: App 本身并不需要 username/password。用户能够取消某一 App 的权限而不影响其他 App , 用户改变 password 不会影响到App。 OAuth2 还有其他很tricky的地方比如如何防 CSRF。 在这里,我觉得 client id , client secret,access token,等等一系列被盗了也没关系,因为你仍旧需要 用户输入 username/password,而且他们是有时效性的,bear token expired 后需要新的授权,仍旧需要重新输入。 |
4
myc0210 OP @puncsky 噢!谢谢。。从你的回复我发现我好想搞错了什么= =因为我本身不需要提供服务。只是单纯自己的一个App,所以我压根也不需要Oauth2,是吗?如果用户的access token(不会expire的版本)丢了。。。那我也不需要管因为那是用户自己被黑了= =我可以这样理解我APP的需求嘛。最多我可以帮用户reset一个access token如果他被黑了。这样足够了?
|
5
jasonworg 2015-03-23 00:48:00 +08:00 via Android
去看看这篇文章,应该对你有着帮助。
http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html |