RESTful服务的两种认证

时间:2014-01-09 18:35:56

标签: web-services security rest restful-authentication

我们有一个中央RESTful webservices应用程序,可以向许多不同的客户端(解析器,Web应用程序,触摸应用程序等)公开数据。客户端有不同的方法来验证用户,有些是LDAP,有些则不是。无论如何,RESTful应用程序将最终用户的身份验证留给客户端,并简单地对发出请求的客户端进行身份验证。客户端将在LDAP中具有用户名和密码,以及客户端可以从中访问RESTful应用程序的可接受IP地址列表。

这是一个棘手的部分:RESTful应用程序必须使用最终用户的用户名审核每个请求。此外,在某些情况下(取决于客户端),RESTful应用程序将需要最终用户的用户名和密码来访问第三方应用程序。因此,来自客户端的每个请求都将具有客户端本身和访问客户端的最终用户的身份验证凭据。

问题就出现了。是否最好将客户端的凭据放在Basic Auth中,并通过加密的SALT请求参数传递最终用户的凭据?或者,如果客户端将两组凭据放入Basic Auth(即system~username:systempwd~userpwd)并将其解析为两组令牌,然后进行身份验证。或者,另一种解决方案比这两种解决方案都好?

1 个答案:

答案 0 :(得分:1)

这听起来很像OAuth2的“资源所有者密码凭据授权” - 请参阅http://tools.ietf.org/html/rfc6749#section-4.3。您在Authorization标头中传递应用程序/客户端凭据,并使用x-www-url-encoded编码的正文中的客户端信息。在会话开始时执行一次,然后依赖于授权标头中的承载令牌。所有这些都在RFC中描述。请记住使用SSL / TLS加密凭据。