我正在开发一个本机应用程序,它将使用 OAuth 来允许用户登录(或访问材料本身)到另一个网站。我知道我将使用 OAuth 的隐式流程或授权代码流程,但是我所有关于安全性的研究似乎都与客户端机密有关。
我的应用程序(由第 3 方站点提供)的客户端 ID 似乎是公开的,因此会公开。这将允许其他人接受它,并遵循相同的隐式流程,伪装成我的应用程序。这只是 oauth 的性质吗?
有没有办法存储这些信息,使其不会被盗?
编辑:我想澄清一下 - 我了解 oauth 使用户的信息不受我的应用程序和理想情况下拦截器的影响。但是是什么阻止某人获取我的客户 ID(因为它通过身份验证过程公开可见)并将其用于自己?有什么措施可以通过开源应用程序来解决吗?
无法保护客户端 ID,因为它是作为授权请求中的查询参数发送的。
GET /authorize?response_type=code&client_id=s6BhdRkqt3&state=xyz&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
(您可以在本机应用程序中使用 Web 视图并隐藏地址栏,但是您的应用程序将有权访问用户的凭据。)
进一步解释:
不建议在本机应用程序中使用隐式流,因为攻击者可以在操作系统上注册您的重定向 URI,并可以使用访问令牌捕获回调。
授权码流是更好的选择。如果您能够将客户端密钥安全地存储在您的应用程序中(请参阅下面的链接),攻击者可以使用您的客户端 ID 来启动授权或捕获回调,但他将无法使用授权代码来获取访问令牌。
链接:
归档时间: |
|
查看次数: |
1753 次 |
最近记录: |