如何使用基本身份验证保护Android / ios应用程序的Web API

时间:2015-07-29 21:40:22

标签: android ios asp.net-web-api basic-authentication

我正在尝试保护Web API,该Android将由iOSBasic Authentication上运行的移动应用使用。它现在的工作方式是使用SSL usernamepasswordWeb API将每个请求发送到Web API。我在调用filter之前验证actionAndroid的凭据。这非常有效。问题是,在用户登录后,我必须将密码存储在设备上(iOS / Guid)以保存会话,否则他们将不得不一直登录。这不安全,因为如果设备被黑客入侵,则可以访问凭证。我正在寻找一种方法来使用基本身份验证,而无需在设备上存储密码。

我认为this文章中的解决方案可行,但我不清楚如何使其发挥作用。在接受的答案中,它说

  

为每个应用生成一个密钥,让他们将每个请求中的密钥作为令牌传递。然后,您的服务器可以验证密钥并验证请求。

     

查看ASP.NET站点中的Basic Authentication模块。该示例使用“基本”作为授权方案,但您可以使用“令牌”进行更改。

我不清楚这里的过程。在此示例中,即使在初始登录期间也似乎没有涉及任何用户名/密码。用户如何在不登录的情况下获取密钥?然后,报价中提到的“关键”究竟是什么。那可能是ifElse之类的东西?我也不理解这比如果被黑客攻击在设备上存储用户名和密码更安全。黑客可以使用“密钥”,就像用户名和密码一样正确吗?

1 个答案:

答案 0 :(得分:3)

这是身份验证的基础知识,我将以简单的方式解释该过程。希望你明白。

  • 用户输入名称和密码,然后点按“登录”。
  • 设备向服务器发送名称和密码。
  • 服务器使用长的随机唯一字符序列进行身份验证和响应(例如,密钥)。
  • 设备和服务器都存储密钥。
  • 所有其他请求都使用密钥进行身份验证。
  • 对于每次通话,服务器都会检查密钥是否与存储的密钥匹配。
  • 设备永远不会存储用户名或密码。
  • 如果怀疑有违规行为,
  • 服务器可以禁用/删除该密钥,在这种情况下,用户必须重新登录

使用加密完成所有这些操作。所有的一切!