V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
myc0210
V2EX  ›  程序员

求大神告知 OAuth2 refresh token 的理解以及 phonegap 用户登录的流程

  •  
  •   myc0210 · 2015-03-22 15:44:33 +08:00 · 6458 次点击
    这是一个创建于 3516 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我要做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 验证用户罢了。。。求好方法。。。

    5 条回复    2015-03-23 00:48:00 +08:00
    belin520
        1
    belin520  
       2015-03-22 16:40:19 +08:00 via Android
    这排版,句号不是这么用的
    puncsky
        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 后需要新的授权,仍旧需要重新输入。
    myc0210
        3
    myc0210  
    OP
       2015-03-22 17:27:34 +08:00
    @belin520 不好意思 那不是句号。。。我习惯打什么都加这个。。。
    myc0210
        4
    myc0210  
    OP
       2015-03-22 17:32:11 +08:00
    @puncsky 噢!谢谢。。从你的回复我发现我好想搞错了什么= =因为我本身不需要提供服务。只是单纯自己的一个App,所以我压根也不需要Oauth2,是吗?如果用户的access token(不会expire的版本)丢了。。。那我也不需要管因为那是用户自己被黑了= =我可以这样理解我APP的需求嘛。最多我可以帮用户reset一个access token如果他被黑了。这样足够了?
    jasonworg
        5
    jasonworg  
       2015-03-23 00:48:00 +08:00 via Android
    去看看这篇文章,应该对你有着帮助。
    http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3386 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:27 · PVG 19:27 · LAX 03:27 · JFK 06:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.