OAuth 2.0公共客户端模拟

pnwntuvh  于 2023-06-21  发布在  其他
关注(0)|答案(2)|浏览(137)

我想开发一个本地应用程序(用于移动的电话),它使用OAuth 2.0 Authorization从资源API访问受保护的资源。如2.1节所定义,我的客户端的 typepublic
在注册时,授权服务器提供用于公共标识的client_idredirect_uri
客户端将使用授权码从授权服务器接收其授权授予。这一切似乎都是安全的(如果正确实现的话),可以抵御中间的任何攻击者。
在第10.2节中讨论了客户端模拟。在我的例子中,资源所有者通过用户代理向授权服务器提供它的凭证来赠款客户端授权。本节讨论授权服务器:
应该使用其他方法来保护资源所有者免受此类潜在恶意客户端的攻击。例如,授权服务器可以使资源所有者参与帮助识别客户端及其来源。
我的主要担心是,一旦检索到client_idredirect_uri,很容易模拟我的客户端。
由于公共客户端的性质,这可以很容易地进行逆向工程。或者在我的情况下,该项目将是开源的,所以这些信息可以从网络上检索。
就我从 * 10.2节 * 中所理解的,资源所有者有责任通过与授权服务器应该协助的内容进行比较来检查客户端是否合法。
根据我的经验,第三方应用程序向我请求授权授予,我得到的只是一个页面,其中包含一些关于实际上应该请求该授予的客户端的信息。基于纯粹的逻辑意义,我只能判断请求授权的客户端是否实际上是授权服务器告诉我它应该是谁的客户端。
因此,每当我们处理PEBKAC(我认为经常发生)时,如果资源所有者只是赠款他们(可能看起来与我的合法客户端相同)授权,那么模拟器就可以轻松访问受保护的资源,这不是真的吗?

qyzbxkaa

qyzbxkaa1#

TLDR -您希望oauth访问令牌仅颁发给有效的客户端-在本例中是安装了您的应用程序的设备,是吗?
首先- Oauth2有多个工作流来发布令牌。当您运行Oauth2服务并向运行您的应用的设备颁发令牌时,授权代码/重定向URL不是相关的工作流。我建议你在这里阅读我的答案-https://stackoverflow.com/a/17670574/116524
第二,没有运气。您的服务完全基于HTTPS。没有真实的的方法可以知道客户端注册请求是否来自官方应用程序商店安装的应用程序。你可以将一些秘密存储到应用程序中,但它可以通过逆向工程找到。唯一可能发生这种情况的方式是应用程序商店本身提供某种身份验证信息,这还不存在。

dsekswqp

dsekswqp2#

“唯一可能发生这种情况的方式可能是应用商店本身提供的某种身份验证信息,而这种信息目前还不存在。”
苹果应用商店不提供这样的信息吗?

相关问题