我是JWT的新手。我有一个会话创建端点。我的移动应用程序发出了请求。目前我拥有它,以便当用户成功登录时,我将在授权承载标题中返回JWT:
new_conn
|> put_status(:created)
|> put_resp_header("authorization", "Bearer #{jwt}") #<-----------
|> render("show.json", session: user)
但是,从我的客户端读取这个有点棘手。我可以安全地在JSON响应中返回它吗?
答案 0 :(得分:5)
当客户端将其凭据发送到服务器(以交换它们作为令牌)时,最近发布的令牌可以作为文本或JSON在响应有效负载中返回,它取决于您:
HTTP/1.1 200 OK
Date: Wed, 19 Apr 2017 09:51:12 GMT
Content-Type: text/plain
xxxxx.yyyyy.zzzzz
HTTP/1.1 200 OK
Date: Wed, 19 Apr 2017 09:51:12 GMT
Content-Type: application/json
{ "token" : "xxxxx.yyyyy.zzzzz" }
您必须记住的是客户端和服务器之间的通信:必须通过HTTPS完成,以确保消息不会被篡改。
当客户端将令牌发送到服务器时,它应该在Authorization
标头中发送(再次通过HTTPS):
GET /api/greetings HTTP/1.1
Host: example.org
Authorization: Bearer xxxxx.yyyyy.zzzzz
Authorization
标头应该带有凭据。在谈论基于令牌的身份验证架构时,令牌是凭据,并且通常以Bearer
为前缀,表示身份验证架构。这个answer将对此有所了解。
最后,值得一提的是Authorization
标头设计用于请求,而不是响应。