Oauth2的token疑问?
1.最近在看oauth2协议的时候, 发现都提到用 账号密码 到服务端换一个token, 之后请求都用token;
总感觉, 这个token此时不就相当于密码了么, 被人拿到后, 还是可以直接使用啊, 虽然有失效时间, 比如微信公众号介绍的,它的access_token是两个小时失效, 但是两个小时之内, 岂不是就相当于 账号和密码 都被人拿到了? 感觉没什么意义啊 拿到你账号和密码1分钟就足够干坏事了, 何况两个小时?
2.另外, 在第一次获取access_token的时候, 不也得发送appid和AppSecret么, 这不也不安全么? 一次发送和每次发送只是降低了一点暴露AppSecret的可能性, 也没感觉安全方面有多好啊?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先,没有绝对安全的系统,所有的安全机制都只是尽可能增加破解难道,降低风险.
oauth主要解决的是跨域授权问题,比如如果你想使用你的微信账户登录一个第三方应用,不可能直接使用微信账户密码直接进行登录,这样增加了你的账户密码泄漏的可能性,oauth通过以下策略提高安全性.
如果你要使用微信oauth,那么你需要去微信申请appid以及appSecret,这个过程需要提供相应的资质,然后oauth提供方会进行审核,降低了恶意第三方通过oauth窃取你信息的可能性.
使用oauth时,让你显示的授权具体的操作(scope),如你可以只授权获取账户信息(头像,用户名之类),这样对于oauth提供方来说,机制token泄漏了,你也只能获取到账户信息,不能进行其他的操作,所以风险得到控制.
整个oauth流程采用tls加密,会进行证书校验,这样降低了数据传输过程中被篡改或暴露的可能性.
token可以主动失效,也可以被动调用,当发现token泄漏时,可以很容易进行取消授权,这样token将无法使用.
所以总的来说,oauth不是万精油,完美无懈,但他的确是目前技术体系下这些场景的最好的解决方案.不然怎么能成为标准呢.
假设你做了个应用,需要取用户的微信信息,终端用户要登录微信授权,微信才给你的程序提供token。你用token就可以直接拿用户微信信息了。如果不用oauth,终端用户不是要把微信的用户名密码提供给你的程序?appid和appSecret只是能保证是你的程序发送的token给微信,也就是发给你的token只能你用,否则其他应用拿这个token不是也能取到用户微信信息了?