标题可能听起来很愚蠢,但我找不到更好的表达方式。
我有一个使用OAuth2服务器的API。此API是我的移动应用程序的后端服务,但我也会将其提供给第三方应用程序。
我还有一个登录方法,用于通过电子邮件和密码对用户进行身份验证,并为我的移动应用程序向该用户返回access_token。
因此,每当您使用POST /api/v1/users/auth
和email
制作password
时,您将获得一个“完全访问”令牌,其中包含所有可用范围。我不认为这里有一个很大的缺陷,因为拥有用户凭据的人可以通过网络界面访问应用程序并做任何他想做的事情。
但是,认为任何人都可以从现有应用程序获取access_token是很奇怪的,因为在正常的OAuth进程中,只有正确的应用程序才能从服务器获取access_token。但我甚至不认为Oauth2是专为客户端暴露的应用程序设计的,如桌面,JavaScript等。
有更好的方法吗?我做错了吗?
谢谢!
答案 0 :(得分:0)
只要您通过https进行通信并且您的javascript是安全/稳定的,您就不会有任何后顾之忧。
否则您将面临以下风险:
1)凭据被XSS漏洞注入您网页的代码窃取。
2)具有读取数据包能力的窃听者可能会窃取凭据。
3)" FaceNiff"等软件。嗅到安全令牌,例如facebook&谷歌,并允许他们登录与该WIFI连接的任何用户的帐户。
4)授予可能有意或者代表更多恶意代码滥用这些特权的代码的权限。
基本上,当通过非安全线路时,您必须记住,授予访问令牌意味着给定用户有权在Facebook,Github,Google,您的平台等上执行操作A,B和C.任何抓住该令牌的人现在都拥有在Facebook,Github,Google,您的平台等上作为相关用户执行操作A,B和C的相同权利。
这个article非常透彻地理解了OAuth令牌背后的概念。
如果您有任何疑问,请与我们联系!