OAuth2资源所有者凭据流:如何确定给定的client_id是官方应用程序的?

时间:2013-10-02 12:23:05

标签: mobile oauth-2.0

我有一个使用OAuth2和移动应用程序保护的REST后端。

我想使用资源所有者凭据流来从我的移动应用程序验证用户。

由于我必须提供client_id来识别请求身份验证的应用程序,我如何防止黑客从我的移动应用程序源代码中窃取我的client_id,以及如何撤销它?

我真的想知道官方Twitter Android应用程序如何处理这种事情。

1 个答案:

答案 0 :(得分:0)

我知道这是一篇非常古老的帖子,但我只是在一个不相关的搜索中看到它并看到它没有得到答复。

引用OAuth 2.0 spec

  

客户端标识符不是秘密;它暴露给资源所有者,不得单独用于客户端身份验证。

换句话说,client_id与用户名或电子邮件非常相似。如果有人发现我的电子邮件地址,我当然不会介意,即使这是登录和查看我的电子邮件所需数据的一半。为了保持这个想法,client_secret是一个密码,应该通过保护您的源代码并仅向POST个端点发送HTTPS请求来保密。

至于通过这些凭据撤销授予客户的权限,大多数(如果不是全部)主要OAuth提供商将允许您通过其OAuth门户网站执行某些操作。要关注您的Twitter示例,他们在API密钥页面上有一个按钮,以便重新生成API密钥。"如果您是服务提供商(我说这是因为您提到了对资源所有者凭据的权限)并且您没有设置面向公众的OAuth门户,那么只需更改任何数据中的字符串即可-store你使用服务器端,然后在客户端源代码中进行相同的更改。