RESTful用户身份验证服务

dju*_*ble 9 api rest web-services restful-authentication

嘿伙计们,这似乎经常被讨论,但我想围绕用RESTful服务进行身份验证做一个简单,淡化的问题.方案如下:

  • 有一个系统可以容纳注册用户的应用程序.系统公开RESTful API以访问这些用户.
  • 有一个具有登录表单的前端应用程序.应用程序可以是内部的,也可以是外部的.
  • 前端应用程序需要使用用户系统中的数据来验证用户.

现在的问题是如何根据用户系统中的数据验证在客户端应用程序中输入其凭据(用户名/密码)的用户,以确保其安全性和高性能?为了这个问题,假设客户端应用程序是某种Intranet的内部应用程序,但应用程序不会驻留在同一台机器上,只能通过该服务进行通信.

我理解让应用程序"超媒体驱动"的想法,但我们应该能够提供过滤/搜索服务.例如,考虑以下资源和API:

  • http://example.com/users
    • GET - 检索所有用户(分页,超媒体驱动)
    • POST - 创建新用户
    • 不支持PUT/DELETE
  • http://example.com/users/[id]
    • GET - 返回id = {id}的用户的完整表示
    • PUT - 更新用户,接收任何预定义的媒体类型
    • 删除 - 删除用户(具有适当的授权)
    • POST不受支持

基于以上所述,我的想法是在用户列表中使用客户端应用程序GET,按用户名进行过滤.该服务将哈希密码和salt返回给客户端,客户端将执行身份验证.

思考?

Ste*_*kov 6

如果我正确理解您的问题,您正在寻求实现将处理身份验证的通用服务,以便您可以将其重用于不同的应用程序.

我建议你看一下为这个问题域构建的OAuth.


Jim*_*ans 3

首先,您不希望客户端执行身份验证,因为这样编写一个闯入您的服务的客户端就很简单了。

相反,只需使用HTTP BasicHTTP Digest等身份验证机制。

请注意,如果您使用 Java,Restlet框架会提供称为 Guards 的拦截器,它支持这些机制和其他机制。我强烈推荐雷斯特莱特。