我有一个使用OAuth2和移动应用程序保护的REST后端。
我想使用资源所有者凭据流来从我的移动应用程序验证用户。
由于我必须提供client_id来识别请求身份验证的应用程序,我如何防止黑客从我的移动应用程序源代码中窃取我的client_id,以及如何撤销它?
我真的想知道官方Twitter Android应用程序如何处理这种事情。
答案 0 :(得分:0)
我知道这是一篇非常古老的帖子,但我只是在一个不相关的搜索中看到它并看到它没有得到答复。
客户端标识符不是秘密;它暴露给资源所有者,不得单独用于客户端身份验证。
换句话说,client_id与用户名或电子邮件非常相似。如果有人发现我的电子邮件地址,我当然不会介意,即使这是登录和查看我的电子邮件所需数据的一半。为了保持这个想法,client_secret是一个密码,应该通过保护您的源代码并仅向POST
个端点发送HTTPS
请求来保密。
至于通过这些凭据撤销授予客户的权限,大多数(如果不是全部)主要OAuth提供商将允许您通过其OAuth门户网站执行某些操作。要关注您的Twitter示例,他们在API密钥页面上有一个按钮,以便重新生成API密钥。"如果您是服务提供商(我说这是因为您提到了对资源所有者凭据的权限)并且您没有设置面向公众的OAuth门户,那么只需更改任何数据中的字符串即可-store你使用服务器端,然后在客户端源代码中进行相同的更改。