公共客户端的OAuth客户端身份验证

时间:2014-03-12 00:31:13

标签: oauth-2.0 authentication

早上好,

我花了很多时间研究OAuth 2规范及其不同的授权和客户端类型。关于如何使用客户机密密码验证公共客户端(即移动安装的应用程序)的问题,我还没有找到令人满意的答案。

我还看了FB和Google,发现他们使用了bundleID(iOS)和公共签名密钥(Android)。

任何人都可以解释客户端auth如何在这些情况下工作,如何补充/适应OAuth 2.0规范以及如何避免安全循环漏洞(即反编译移动应用程序代码)?

尼克斯

1 个答案:

答案 0 :(得分:0)

简短回答:公共客户端未在OAuth 2.0中进行身份验证。

该规范明确区分了机密(通常是webapp)和公共(通常是嵌入式)客户端。机密客户端使用具有最大安全性和身份验证的授权代码授予方案。但是,安装在用户设备上的应用程序,特别是javascript应用程序无法正确隐藏其client_secret和收到的授权代码,因此标准为它们制作了简化的方案:隐式授权流程。

在这种情况下,没有client_secret或code =>需要进行令牌交换。请注意,它在设计上基本上不太安全,因为嵌入式应用程序本身的安全性较低,因此简单地省略了无法保护安全性的步骤。客户端仅使用其client_id而不使用client_secret,并立即从授权端点检索令牌而不是授权代码。通过使用https,用户对请求的显式授权以及将结果返回到已注册的redirect_uri,场景中仍然存在一些安全性。请注意,出于安全原因,规范禁止在此方案中发出刷新令牌。