OAuth2不应该将用户重定向到外部浏览器,而不是仅仅将登录屏幕加载到WebView中

sim*_*dam 5 security android ios oauth-2.0

在移动设备上处理OAuth的正确方法是什么?Android,iOS等.正如我所看到的,大多数应用程序只是将登录屏幕加载到应用程序中的浏览器,如WebView,或者等等.它不是真的践踏了OAuth的整个原则吗?因为我可以作为开发人员轻松读取用户输入文本字段的密码..有没有办法如何使用startActivityForResult模式(特别是在Android上)?因为当用户将他们的登录名和密码输入主系统浏览器时,它应该是一种更加坚实的方法来保证应用程序的安全性和可靠性?

sta*_*an0 1

在应用程序和浏览器之间传递数据

用户登录后,您必须从页面读取响应(重新加载的 URL),以获取用于请求身份验证和刷新令牌的授权代码。如果(默认)浏览器必须负责为您返回授权代码,那么它必须具有(记录的)实现接收此类结果的意图。

让浏览器知道您的应用程序的凭据

还有另一个更严重的问题 - 通常您使用应用程序的凭据(客户端 ID + 客户端密钥)请求授权/身份验证。您可以将它们作为参数放在标头或 url 中的某个位置。您必须将它们提供给浏览器,以便将它们放入请求的 headers/url 中。

综合:

当浏览器同时具有授权代码和您的应用程序的凭据时,它可以获取用户帐户的身份验证/刷新令牌,不仅可以访问它,还可以假装是您的应用程序。考虑到这是设备附带的内置浏览器,用户会很平静,因为他在购买设备时可能会信任制造商,但应用程序的开发人员可以信任制造商吗?当用户选择第三方浏览器作为默认浏览器和/或卸载内置浏览器时?

简而言之:

用户和开发人员都必须信任第 3 方 - 浏览器,而不是用户信任他/她安装的应用程序