我花了最后几天阅读文章和OWASP,这是我想要的设计。我的应用会将数据保存在云中。密码不是一个简单的密码,所以每次进入密码都会令人尴尬。该应用程序经常使用,所以我想保存密码。
我的建议如下。请写下你的反对意见:
备份REST服务将使用令牌对用户进行身份验证。它可能会返回令牌过期错误。
我打赌两分钱,这种方法对于非银行应用是安全的。我错过了一些空洞吗?攻击者甚至可以拥有root访问权限,反编译混淆的应用程序,修改二进制文件,但他无法在移动设备上获取密码。即使您喜欢该提案,也请发表评论,以便获得积极反馈。
资源:
答案 0 :(得分:1)
我会避免将用户凭据存储在设备上,即使它们已加密。它引入了一些安全风险以及您必须考虑的一些业务逻辑,特别是当用户更改密码时您会做什么?在您描述的方法中,应用程序将继续发送使用用户公钥加密的旧密码,并且身份验证将失败。
我建议使用OpenID Connect和OAuth2。 OpenID Connect将处理身份验证部分和OAuth2以进行授权。 OAuth2规范具有刷新令牌的概念,可用于在访问令牌过期后续订。
另一个好处是,您可以将身份验证委派给用户熟悉的服务,如Facebook,Google等,这可以带来更好的用户体验。
有一些关于如何使用OpenID Connect和OAuth2与Google集成的信息:https://developers.google.com/identity/protocols/OpenIDConnect。 Facebook等其他提供商也有类似的文档。如果您更喜欢管理自己的身份,甚至可以使用IdentityServer,http://docs.identityserver.io/en/release/
之类的东西