使用JWT和JSONAPI进行身份验证

时间:2016-01-15 09:22:47

标签: rest authentication jwt json-api

我正在使用以下技术/方法实现REST API:

我想实现身份验证端点,它应该在JSONAPI格式的POST请求中接收用户名和密码,并以JSONAPI格式返回JWT令牌。 但我发现有些矛盾不允许我100%RESTful:

设置名称端点/tokens,因为它实际上创建了令牌。响应也是tokens类型的资源,例如:

{
  "data": {
    "type": "tokens",
    "attributes": {
      "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEifQ.ivJ5P23wqVo3w31flg3aOu7er--Ijght_RrBf_MuqsU",
    }
  }
}

但请求怎么样? usernamepassword是用户的属性,但应将其发送到/tokens端点。如果我将users资源发送到/tokens端点,则没有多大意义。

有没有解决方法,遵循JSONAPI并保持API有意义?

2 个答案:

答案 0 :(得分:5)

  

如果我将用户资源发送到/ tokens端点,则没有多大意义。

为什么不呢? REST并不强制您只将用户发送到用户资源。当然,当您对用户资源进行CRUD操作时,您将通过用户资源端点执行此操作。

但是要生成令牌,将用户资源发送到令牌端点是完全合理的。

答案 1 :(得分:2)

您还可以通过HTTP Authorization标头提供用户凭据,或者作为JSON有效负载的顶级-bash: nvm: command not found属性的一部分提供。