在移动设备上处理 OAuth 的正确方法是什么?Android,iOS等。正如我所见,大多数应用程序只是将登录屏幕加载到WebView之类的应用程序内浏览器中,或者这样......它实际上不是践踏了OAuth的整个原则吗?因为作为开发人员,我可以轻松读取用户在文本字段中输入的密码。有没有办法使用 startActivityForResult 模式(特别是在 Android 上)来做到这一点?因为当用户在主系统浏览器中输入他们的登录名和密码时,它应该是一种更可靠的方法来维护应用程序的安全性和可信度?
问问题
763 次
1 回答
1
在应用程序和浏览器之间传递数据
用户登录后,您必须从页面读取响应(重新加载的 url),以获取用于请求身份验证和刷新令牌的授权代码。如果(默认)浏览器必须负责为您返回授权代码,那么它必须具有(记录)接收此类结果的意图的实现。
让浏览器知道您的应用程序的凭据
还有另一个更严重的问题 - 通常您使用应用程序的凭据(客户端 ID + 客户端密码)请求授权/身份验证。您将它们作为参数放在标题或 url 中的某个位置。您必须将它们提供给浏览器,以便将它们放入请求的标头/url 中。
结合:
当浏览器同时拥有授权码和您的应用程序的凭据时,它可以获取用户帐户的身份验证/刷新令牌,并且不仅可以访问它,而且还可以伪装成您的应用程序。考虑到这是设备附带的内置浏览器,用户会很平静,因为他可能会在购买设备时信任制造商,但应用程序的开发人员可以信任制造商吗?当用户选择第 3 方浏览器作为默认浏览器和/或卸载内置浏览器时?
简而言之:
用户和开发者都必须信任第三者——浏览器,而不是用户信任他/她安装的应用程序
于 2013-10-25T15:08:44.827 回答