OAUTH 客户端机密安全、本地主机重定向 URI 和模拟

bug*_*ker 3 security oauth-2.0

在过去的几年里,我一直在用 OAUTH 2 做一些工作。我有几个授权服务器和几个使用它们的客户端。

任何使用 OAUTH2 制作应用程序或某些客户端解决方案的人都知道客户端密码可能是一个问题。可以通过使用访问代码授权在一定程度上缓解这种情况。已经讨论过使用代理来获取秘密。

我的问题是关于重定向 URI - 这是为了保护访问代码授予过程。身份验证服务器只会将访问代码返回到文件中的重定向(在该客户端 ID 的数据库中)。这个问题与移动应用程序有关。它们通常依赖于https://127.0.0.1https://localhost的重定向 URI。任何人都可以获得 localhost 令牌,对吗?

在这种情况下,是什么阻止某人使用 localhost 重定向 URI 来模拟 clientID?我能不能制作一个模仿应用程序,使用真实的客户端 ID 使用相同的 OAUTH2 登录流程,如果我能够让用户登录,我现在有一个 OAUTH 令牌来访问资源服务器。我错了吗?

如果有人能对此有所了解,我将不胜感激。我想尽可能多地学习,任何事情都有帮助。

Han*_* Z. 6

您描述的攻击是对本机移动应用程序使用授权代码授权时的一个已知弱点。已开发出名为“代码交换证明密钥”的 OAuth 2.0 扩展,通过使用动态生成且仅由真实客户端知道的“代码验证器”来减轻这种威胁。

这项工作在 IETF 中被标准化为一个 RFC,称为 OAuth 公共客户端代码交换的证明密钥,可在:https : //tools.ietf.org/html/rfc7636