我正在尝试保护 Web API
的安全,它将由在 Android
和 iOS
上运行的移动应用程序使用。它现在的工作方式是使用 Basic Authentication
和 SSL
,它将每个请求发送到 username
和 password
Web API
。在调用 action
之前,我在 filter
中验证了 Web API
中的凭据。这很好用。问题是,在用户登录后,我必须将密码存储在设备 (Android
/iOS
) 上以保存 session ,否则他们将不得不一直登录。这是不安全的,因为如果设备被黑客入侵,则可以访问凭据。我正在寻找一种无需在设备上存储密码即可进行用户基本身份验证的方法。
我认为 this 中的解决方案article 可以工作,但我不清楚如何让它工作。在接受的答案中它说
Generate a key for each of your apps and have them pass the key in each request as a token. Your server can then verify the key and authenticate the request.
Take a look at the Basic Authentication module from the ASP.NET site. The sample uses 'basic' as the authorization scheme but you can change it use 'token' instead.
这里的流程我不是很清楚。在此示例中,即使在初始登录期间似乎也没有涉及任何用户名/密码。用户如何在不登录的情况下获取 key ?那么,引述中所指的“ key ”到底是什么。这可能是诸如 Guid
之类的任何东西?我也不明白如果被黑客攻击,这比在设备上存储用户名和密码更安全。只要用户名和密码正确,黑客就可以使用“ key ”?
最佳答案
这是身份验证的基础知识,我将以简化的方式解释该过程。希望你明白。
- 用户输入名称和密码并点击登录。
- 设备向服务器发送名称和密码。
- 服务器使用一长串随机唯一字符(也称为 key )进行身份验证和响应。
- 设备和服务器都存储 key 。
- 所有其他请求都使用 key 进行身份验证。
- 对于每次调用,服务器都会检查 key 是否与它存储的 key 匹配。
- 设备从不存储用户名或密码。
- 如果怀疑有漏洞,服务器可以禁用/删除该 key ,在这种情况下,用户将不得不重新登录
所有这些都使用加密。一切!
关于android - 如何使用基本身份验证保护 Android/iOS 应用程序的 Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31711663/