嘿伙计们,这似乎经常被讨论,但我想提出一个简单的、淡化的问题,围绕使用 RESTful 服务进行身份验证。场景如下:
- 有一个系统可以容纳应用程序的注册用户。系统公开了一个 RESTful API 来访问这些用户。
- 有一个具有登录表单的前端应用程序。应用程序可以是内部的,也可以是外部的。
- 前端应用程序需要使用用户系统中的数据来对用户进行身份验证。
现在的问题是如何根据用户系统中的数据对在客户端应用程序中输入凭据(用户名/密码)的用户进行身份验证,以使其安全且高效?对于这个问题,假设客户端应用程序位于某种 Intranet 的内部,但应用程序不会驻留在同一台机器上,并且只能通过服务进行通信。
我理解让应用程序成为“超媒体驱动”的想法,但我们应该能够提供过滤/搜索服务。例如,考虑以下资源和 API:
- http://example.com/users
- GET - 检索所有用户(分页,超媒体驱动)
- POST - 创建新用户
- 不支持 PUT/DELETE
- http://example.com/users/[id]
- GET - 返回具有 id = {id} 的用户的完整表示
- PUT - 更新用户,接受任何预定义的媒体类型
- DELETE - 删除用户(具有适当的授权)
- 不支持 POST
基于上述,我的想法是让客户端应用程序 GET 在用户列表中,按用户名过滤。服务将哈希密码和盐返回给客户端,客户端将执行身份验证。
想法?