Oauth 2.0 公用客户端的OAuth客户端身份验证

Oauth 2.0 公用客户端的OAuth客户端身份验证,oauth-2.0,authentication,Oauth 2.0,Authentication,早上好 我花了相当长的时间研究OAuth2规范及其不同的授权和客户机类型。但是,对于如何使用客户端机密对公共客户端(即移动安装的应用程序)进行身份验证的问题,我还没有找到令人满意的答案 我还研究了FB和谷歌,发现他们使用的是bundleID(iOS)和公共签名密钥(Android) 有谁能解释一下客户端身份验证在这些情况下是如何工作的,它是如何补充/适应OAuth 2.0规范的,以及如何避免安全循环漏洞(即,反编译移动应用程序代码) thx Nick简短的回答是:公共客户端在OAuth 2.0中

早上好

我花了相当长的时间研究OAuth2规范及其不同的授权和客户机类型。但是,对于如何使用客户端机密对公共客户端(即移动安装的应用程序)进行身份验证的问题,我还没有找到令人满意的答案

我还研究了FB和谷歌,发现他们使用的是bundleID(iOS)和公共签名密钥(Android)

有谁能解释一下客户端身份验证在这些情况下是如何工作的,它是如何补充/适应OAuth 2.0规范的,以及如何避免安全循环漏洞(即,反编译移动应用程序代码)


thx Nick

简短的回答是:公共客户端在OAuth 2.0中没有经过身份验证

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


在这种情况下,不需要客户端\u secret或code=>令牌交换。注意,从设计上看,它本质上不太安全,因为嵌入式应用程序本身本质上不太安全,所以不能保护安全性的步骤被省略。客户端只使用其客户端id,不使用客户端密码,并立即从授权端点而不是授权代码检索令牌。通过使用https、用户对请求的显式授权以及将结果返回到已注册的重定向uri,场景中仍然存在一些安全性。请注意,出于安全原因,规范禁止在此场景中发布刷新令牌。

谢谢。也许要澄清我的问题:我从OAuth的角度了解公共客户端的安全限制,这基本上导致了两种选择:要么不信任应用程序(即不提供对敏感数据/活动的访问),要么在OAuth之外实施附加的安全措施。如果选项1不是一个有效的选项(因为我不想限制移动功能),那么还有哪些额外的安全措施可以将移动应用程序视为机密客户端。因此,我提到谷歌和Facebook,它们似乎应用了额外的手段(bundleID)。啊,对不起,我当时误解了。坦白地说,我对bundleID和类似的移动扩展不太熟悉,我们需要其他人来帮助您。正如我们在这些评论中讨论的,我似乎对这个问题有点误解,我无法正确回答。你能提出一个合适的解决方案吗?我应该删除这个答案吗?