【问题标题】:How secure is OAuth2 for web applicationsWeb 应用程序的 OAuth2 有多安全
【发布时间】:2019-06-11 03:58:19
【问题描述】:
让我们考虑一个使用 HTML 和 Javascript 开发的单页客户端应用程序。
在这种情况下,即使使用隐式或身份验证代码流来请求访问令牌,仍然会在某些可能发出令牌请求的 Javascript 中找到 clientID 和 Secret。此外,在请求标头(或查询参数)中传递访问令牌在网络跟踪中仍然可见。此外,访问令牌需要本地存储在浏览器中。
- 将 OAuth2 用于基于 Web 的应用程序的安全性如何??
- 如果客户端(浏览器)受到威胁,如何保护用户信息。
谢谢。
【问题讨论】:
标签:
authentication
oauth
oauth-2.0
authorization
【解决方案1】:
对于隐式 OAuth,您不要在浏览器 javascript 中使用客户端密码。您只需要客户端 ID。客户 ID 不是秘密,被视为公共信息。客户端 ID 和范围确定您希望授权的服务权限。
将 OAuth2 用于基于 Web 的应用程序的安全性如何?
OAuth 本身非常安全。但是,与任何安全实现一样,它仅与最弱的组件一样强大。对于隐式授权流程,例如您的单页 Web 应用程序,身份验证发生在用户和身份提供者之间。流程完成后,您的应用程序将拥有访问令牌和可选的客户端 ID 令牌。隐式授权流程的假设是用户出现在浏览器中并且不会存储任何机密信息。
如何保护用户信息,如果客户端(浏览器)是
妥协了?
如果用户的浏览器受到威胁,则无法保护任何内容。一旦生成了有权执行 X 的 OAuth 令牌,受感染的浏览器可以继续执行 X 直到令牌过期。
如果您的问题是关于保护用户的登录名和密码,或其他类型的身份验证信息,那么如果浏览器遭到入侵,这些信息也会面临风险。
总而言之,无论使用何种技术进行身份验证和授权,受感染的浏览器都可能没有安全性。