Android 如何为移动应用程序创建无密码登录
我擅长在移动应用程序和API之间构建某种无密码登录(假设我可以控制两者)。其动机是,必须登录对用户来说非常烦人,并且存在安全风险(例如,用户将重用现有密码),我希望用户能够立即开始使用该应用程序 我想知道是否有一些技术可以奏效。例如:Android 如何为移动应用程序创建无密码登录,android,ios,security,token,password-protection,Android,Ios,Security,Token,Password Protection,我擅长在移动应用程序和API之间构建某种无密码登录(假设我可以控制两者)。其动机是,必须登录对用户来说非常烦人,并且存在安全风险(例如,用户将重用现有密码),我希望用户能够立即开始使用该应用程序 我想知道是否有一些技术可以奏效。例如: 在移动设备上生成和随机登录/密码,并将密码存储在钥匙链中 使用此登录/密码组合注册API。这将返回一个令牌 令牌用于后续调用 缺点是: 如果用户删除应用程序,登录名/密码可能会丢失(这可能会通过使用iCloud存储登录名来缓解,但这对密码不好?) 密码存储在设备
- 如果用户删除应用程序,登录名/密码可能会丢失(这可能会通过使用iCloud存储登录名来缓解,但这对密码不好?)
- 密码存储在设备上(但它位于钥匙链中)
所以我的问题是:像这样的事情足够可行和安全吗?有没有已知的技术可以做到这一点 这是非常开放的,但一般来说:不要重新发明轮子,使用标准解决方案,如OAuth和/或OpenID Connect(使用OAuth)。这有一个缺点,用户可能需要通过WebView或类似方式登录才能获得令牌,但您不必存储密码 需要考虑的事项:
- 您不能真正生成随机密码,因为服务器也需要知道它
- Android没有像API一样的公钥链,所以你必须自己保护密码
myapp://login?token=.....
- 为了使其更安全,请使令牌仅可使用一次,并在其上设置过期时间(如一小时)。您还可以通过向服务器发送某种唯一的设备id以及电子邮件地址,将令牌绑定到特定设备。这样,用户就不能简单地将电子邮件转发给另一个人,而是将其打开
- 关于深度链接-我发现一些电子邮件提供商阻止使用带有自定义url方案的链接,如
。克服这一问题的方法是将链接指向服务器,并将其重定向到实际的深层链接app://
-->https://myserver.com/login?token=...
myapp://login?token=...