宁静的设计,如何创建授权服务

时间:2014-05-07 17:02:11

标签: rest authentication restful-authentication api-design jwt

我正在设计我的第一个RESTful API,并对一些事情感到困惑。

到目前为止,我正确使用状态代码,名词和动词,因此发送到http://domain.com/api/contacts的POST会创建新的联系人等。

我现在正在设计我的登录表单,并且不会使用HTTP身份验证,我将获得一个json Web令牌并将其存储在cookie中。我的问题是这些..

1)用于登录服务的名词,我认为api / login会出错。我正在发布用户名和密码,并期望登录发生并将JWT发回。我不是在创建用户,也不是真正吸引用户,所以我不确定该怎么称呼它。

2)我在另一个SO回答中读到,如果对API进行了调用并且令牌无效(如果它在前端过期,则永远不会进行调用),则403是正确的状态码,但是你怎么区分“登录令牌无效”和“登录有效但用户试图访问其他人的内容”之间的区别。

3)如果用户登录并发送了错误的凭据,那么正确的状态代码是什么?它似乎是401,但其他答案已经说不使用它,因为浏览器会显示密码框。

真的很感激任何帮助。

1 个答案:

答案 0 :(得分:3)

  1. POST /auth-tokens
  2. 如果您返回带有403响应的实体,则可以包含该信息
  3. 如果用户通过POST到auth-tokens登录,则可以返回403 Forbidden。来自the spec
  4.   

    服务器理解请求,但拒绝履行请求。授权无效,请求不应重复。 [...]如果请求方法不是HEAD并且服务器希望公开为什么请求没有得到满足,那么它应该描述实体拒绝的原因。

    您可以使用该实体解释登录失败的原因。