3

有一个用户很多的网站。为了使用私人页面,用户必须使用用户名和密码登录。

现在我正在开发一个 android 应用程序,该应用程序通过 API 以原生方式显示来自网站的内容,没有 WebView 或类似方式。工作流程如下:

  • 应用程序已启动
  • 应用程序检查会话密钥是否存在。
    • 如果密钥存在,则询问网站API sessionkey是否有效并且属于用户=>如果是,则允许应用程序的使用
    • 如果不存在会话密钥,则询问用户名+密码,询问 API 是否正确并通过 API 获取新的会话密钥 => 允许应用使用
  • 用户点击例如“账户余额” -> API 请求使用存储的 sessionkey 完成并显示结果
  • 用户点击“支付”,填写表格并获得他的钱 -> API 请求使用存储的会话密钥完成并显示结果

现在我正在寻找解决这个问题的最佳实践。我不希望我的 sessionkey 被简单地劫持,我想确保 sessionkey 确实属于这个用户。由于可以通过应用程序查看/修改私人数据,因此隐私很重要。

我查看了 oAuth,但这不是我认为的需要,因为我需要一个对每个用户都是唯一的消费者密钥和消费者秘密,我无法将其集成到应用程序中。我不想有一个新的窗口/浏览器来输入用户名+密码并通过像 oAuth 那样的回调来处理响应。

对此有任何提示吗?

非常感谢!

4

2 回答 2

1

有关 http 身份验证最佳实践的良好起点,请查看这篇文章:

“标准化 REST 身份验证原则”

于 2012-11-05T15:51:10.657 回答
1

如果要发送私人数据,则需要使用 HTTPS。这也将负责保护您的会话令牌等。如果您需要检查哪个令牌属于哪个用户,您自然需要在服务器端进行此映射。大多数服务器端平台为您提供会话映射或类似的,由会话 ID 等键入,您可以在其中存储几乎任何内容,包括用户详细信息。

于 2012-11-06T05:49:20.713 回答