gpt4 book ai didi

security - OAuth 2.0 公共(public)客户端模拟

转载 作者:行者123 更新时间:2023-12-04 03:21:18 27 4
gpt4 key购买 nike

我想开发一个使用 OAuth 2.0 Authorization 的本地应用程序(用于手机)从资源 API 访问 protected 资源。如 section 2.1 中所定义我的客户的类型public

注册后,授权服务器提供一个client_id 用于公开识别和一个redirect_uri

客户端将使用Authorization Code从授权服务器接收它的授权授予。对于中间的任何攻击者,这一切似乎都是安全的(如果实现正确的话)。

section 10.2讨论了客户端模拟。在我的例子中,资源所有者通过用户代理向授权服务器提供其凭据来授予客户端授权。本节讨论授权服务器:

SHOULD utilize other means to protect resource owners from suchpotentially malicious clients. For example, the authorization servercan engage the resource owner to assist in identifying the client andits origin.

我的主要担心是,一旦检索到 client_idredirect_uri,就很容易冒充我的客户。
由于公共(public)客户端的性质,这可以很容易地进行逆向工程。或者就我而言,该项目将是开源的,因此可以从网络上检索此信息。

据我从第 10.2 节了解到,资源所有者有责任通过与授权服务器应该协助的内容进行比较来检查客户端是否合法。

根据我的第三方应用程序向我请求授权授予的经验,我得到的只是一个页面,其中包含一些关于实际上应该请求授权的客户端的信息。基于纯粹的逻辑意义,我只能判断请求授权的客户端是否真的是授权服务器告诉我它应该是谁的客户端。

所以无论何时我们处理PEBKAC (我认为这经常发生),如果资源所有者只是授予他们(可能看起来像我的合法客户)授权,模仿者是否可以轻松访问 protected 资源?

最佳答案

TLDR - 您希望仅向有效客户端颁发 oauth 访问 token - 在本例中是安装了您的应用的设备,是吗?

首先 - Oauth2 有多个用于颁发 token 的工作流程。当您运行 Oauth2 服务并向运行您的应用程序的设备颁发 token 时,授权代码/重定向 URL 不是相关的工作流程。我建议您在这里阅读我的回答 - https://stackoverflow.com/a/17670574/116524 .

其次 - 这里没有运气。只需完全在 HTTPS 上运行您的服务。没有真正的方法可以知道客户端注册请求是否来自从官方应用商店安装的应用。您可以将一些 secret 存储到应用程序中,但可以通过逆向工程找到它。可能发生这种情况的唯一可能方式是应用商店本身提供某种身份验证信息,但目前尚不存在。

关于security - OAuth 2.0 公共(public)客户端模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38169142/

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