gpt4 book ai didi

oauth-2.0 - 如何在 native 应用程序上存储 OAuth 客户端 ID

转载 作者:行者123 更新时间:2023-12-03 16:14:30 27 4
gpt4 key购买 nike

我正在开发一个 native 应用程序,它将使用 OAuth 来允许用户登录(或访问 Material 本身)到另一个网站。我知道我将使用 OAuth 的隐式流程或授权代码流程,但是我所有关于安全性的研究似乎都与客户端 secret 有关。

我的应用程序(由第 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



(您可以在 native 应用程序中使用 Web View 并隐藏地址栏,但是您的应用程序将有权访问用户的凭据。)

进一步解释:
  • 不建议在 native 应用程序中使用隐式流,因为攻击者可以在操作系统上注册您的重定向 URI,并可以使用访问 token 捕获回调。
  • 授权码流是更好的选择。如果您能够将客户端 key 安全地存储在您的应用程序中(请参阅下面的链接),攻击者可以使用您的客户端 ID 来启动授权或捕获回调,但他将无法使用授权代码来获取访问 token 。

  • 链接:
  • Best practices for storing and protecting private API keys
  • How to avoid reverse engineering of an APK file
  • Best practices for implementing OAuth in native applications
  • RFC for PKCE
  • 关于oauth-2.0 - 如何在 native 应用程序上存储 OAuth 客户端 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50787847/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com