【发布时间】:2020-11-12 10:42:26
【问题描述】:
我正在编写一个与网络服务器通信的安卓应用程序。
到目前为止,我掌握了通信基础知识和基于令牌的身份验证系统。 令牌真的很长,但我仍然害怕,有人可能会猜到它们。 所以我想到了类似下面的东西。这是一种有效的方法吗?
我的想法:
- 应用生成 RSA 密钥对。
- 通过 ssl 使用邮件和密码登录(向服务器提供公钥)
- 服务器生成唯一令牌
- 服务器保存令牌和公钥
- 服务器向应用返回令牌
- 从现在开始,应用程序使用令牌,但使用私钥加密所有消息。
- 服务器收到带有令牌的消息。它尝试使用公钥解密数据,以确保此消息来自原始登录。如果无法解密,则拒绝请求。
这是一种有效的方法吗?还是这个方法太弱了?
【问题讨论】:
-
您试图解决或缓解的问题或威胁是什么?这个设计中实际使用的令牌是什么,是客户端标识符吗?
-
没错!我考虑过使用它作为标识符,就像它在 web 开发中的令牌中很常见。最后我用 PKCE 跑过 Oauth2 并选择继续走这条路,因为它似乎正是我试图在这里归档的内容。