如何使用Restful JSON API进行身份验证?

时间:2014-07-14 09:34:21

标签: api rest

关于如何使用restful json API验证用户管理员是否有可能的答案?

例如,使用http get,向API发送用户名和密码是一种很好的做法吗? API应该返回什么? (apikey?,{success:true}?)

2 个答案:

答案 0 :(得分:1)

据我所知,您提供的是API。所以,基于此,我建议您使用以下术语:

要让用户对您的API进行身份验证,请为使用它的每个用户创建一个单一的API KEY,并按照用户和passwd请求:

yourweb/api/auth/?user=xxxxxx&passwd=xxxxx&userkey=xxxxxx

出于安全原因,API的每一步都应该使用HTTP来完成。

对于响应,在您的数据库中为所有用户分配auth_token,在6小时后无效,如果未使用或请求的使用延长期限。

{
    error: 0,
    auth_token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
    expires_on: 134871324
}

一旦用户拥有auth_token,您可以检查它以及他的userID以在网站上检索他的ACL。完全没有必要告诉API本身是否有管理员。

答案 1 :(得分:1)

RESTful API中最简单的身份验证方法是按请求身份验证,并允许客户端为每个请求提供凭据(例如用户名/密码)。

身份验证机制的选项包括HTTP基本身份验证,查询参数或正文中的参数作为JSON / XML或表单数据。无论凭据如何传入,都应该通过安全通道(https)。

API本身不太可能需要实现身份验证/授权,因为这是一个成熟的空间,现有许多优秀的实现。

大多数应用程序容器/框架都包含HTTP基本身份验证的实现,能够对客户端进行身份验证,并对标准源(如文件,数据库,LDAP服务器等)执行基于角色的授权。对于作为正文或URL参数传递的凭据,过滤器通常可以很好地解析凭据并将其传递给安全提供程序。

在大多数应用程序容器/框架中,执行authn / authz后,安全提供程序会使用有关客户端的信息信息(包括id和角色)来扩充请求。