我有一个(Drupal)网站,需要一个配套的移动应用程序(非常定制,而不仅仅是创建/查看节点)。我知道我可以在这方面使用OAuth,但我想知道替代方案(因为OAuth有点复杂,但通常安全性可能是这样)。
当您使用某些移动应用程序(以Evernote为例)时,您不会被重定向到网站以授予该应用程序的权限。相反,你只需登录你的用户名和密码,直接在应用程序内。
所以,我想知道它是如何工作的,以及在哪里实现它。密码是否存储在设备上,并发送到网站?这真的安全吗?
发布于 2014-09-17 11:15:30
彼得:当你使用某些移动应用程序(以Evernote为例)时,你不会被重定向到网站来授予应用程序的权限。相反,你只需登录你的用户名和密码,直接在应用程序内。
实际上是Evernote使用OAuth。OAuth2允许不同的身份验证工作流。资源所有者密码凭据授予不打开网站。
彼得:所以,我想知道它是如何工作的,以及在哪里实现它。密码是否存储在设备上,并发送到网站?
Android认证器能够在设备上存储身份验证令牌和密码。身份验证者将使用身份验证令牌(如果可用)访问web应用程序。如果没有可用的令牌,它将尝试获得一个带有密码的令牌,该密码将通过登录对话框检索。因此,您可以避免存储密码,但是一旦身份验证令牌过期,登录对话框就会出现。如果可能的话,也可以使用谷歌建议避免询问密码:
一般来说,我们建议尽量减少询问用户证书的频率--以使网络钓鱼攻击更加明显,并且不太可能成功。相反,使用授权令牌并刷新它。
彼得:这真的安全吗?
您可以假定密码是安全存储的。简单地说,Android的工作方式就像Linux系统,每个应用程序都由另一个用户运行,因此如果没有公共API,应用程序就不能相互访问。注意,这是一个根植的Android手机削弱了这种机制。
如果您想跳过实现OAuth,您可以创建一个更简单的登录服务,它返回一个身份验证令牌(例如会话id),但是与往常一样,在推出您的on安全系统时,存在许多缺陷。因此,我建议您寻找一个OAuth框架(例如,Apache Oltu),并以标准的方式寻找实现Android身份验证器。
https://security.stackexchange.com/questions/67546
复制相似问题