Tho*_*son 12 iphone authentication mobile android
我对在移动应用中进行用户身份验证的最佳方式感兴趣.目前设置非常简单.我在应用程序上存储用户名和密码,并在每次需要运行受限查询时将其发送到api.
我觉得这可能是错误的方法.
当用户登录然后存储该用户的ID时,更好的方法是发送用户名和密码吗?这个问题是api接受用户ID而不是用户名和密码.用户ID将更容易"猜测",恶意用户可以通过随机选择的用户ID在其帐户下执行操作向api提交请求.我有一个api密钥.这足够安全吗?
问题是我想开始将twitter和facebook oauth整合到应用程序中.我没有读太多关于它的内容,但我认为你得到了一个"令牌".如何使用您建议的设置?在我自己的用户数据库中创建令牌并使用令牌(无论是我的,Facebook还是推特)作为授权会有好处吗?或者将每项服务分开并单独处理它们是否有意义?
谢谢.
Pet*_*ego 10
正确的方法是在用户登录时在服务器上生成auth令牌,并在登录回复中发送此令牌.然后,此令牌用于后续请求.
这意味着服务器必须跟踪它生成的身份验证令牌.您还可以跟踪令牌创建时间并使令牌在一段时间后过期.
令牌必须是足够长的随机字符串,因此不容易猜到.如何做到这一点之前得到了回答:如何生成随机的字母数字字符串?
我个人更喜欢UUID方法.
更新:
这个问题已经在Web浏览器中通过cookie和会话解决了.您可以在Android请求中重用此机制(尽管某些REST纯粹主义者反驳了这种方法):
启用服务器上的会话.
当用户登录到服务器时,向会话添加一些数据,例如登录时间:
request.getSession().setAttribute("timeOfLogin", System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)由于会话已启用,您还需要在HttpClient请求中启用对Cookie的支持:使用HttpClient时跨活动使用Cookie
每次发出请求时,服务器都应检查会话是否包含timeOfLogin属性.否则它应该返回HTTP 401回复.
用户注销时,请调用服务器注销URL并清除客户端上的cookie.
| 归档时间: |
|
| 查看次数: |
6877 次 |
| 最近记录: |