REST API 发送 JWT

Posted

技术标签:

【中文标题】REST API 发送 JWT【英文标题】:REST API sending JWT 【发布时间】:2017-12-28 14:31:01 【问题描述】:

我正在开发一个小型 REST API,供浏览器和 android / ios / Windows Phone 应用程序使用。我正在使用 JWT 进行身份验证。由于在 API 中每个 url 都必须接收令牌,我一直在思考如何将令牌发送到 API,以便它也与移动应用程序兼容。

我只能想到两个选择: 第一:cookies,但我不知道android / iOS / Windows Phone应用程序是否可以像浏览器一样使用cookies。可以吗?

第二:使用 POST 在每个请求上发送令牌。我知道它会起作用,但我觉得它不专业,我相信还有其他方法可以让它变得更容易。

cookie 有用吗?有谁知道如何正确地做到这一点?

谢谢

【问题讨论】:

【参考方案1】:

jwt 它是您的最佳选择 主要思想是使用您的凭证生成令牌,该凭证有 3 部分,第一部分和第二部分包含用户信息,第三部分由前 2 部分和服务器密钥生成

您可以看到这个示例由 laravel 和 angularjs 构建并带有完整描述 example here

更新: 最好是在请求头授权中发送它:Bearer cn389ncoiwuencr[jwt token] 它可以在 web 和 mobil 中工作

【讨论】:

我想我没有解释自己。我对 JWT 没有任何问题,我知道它们是如何工作的以及如何管理它们。我正在寻找在浏览器和手机应用程序中发送令牌的最佳方式,以便相同的后端脚本能够读取它,而无需根据请求的来源进行任何更改。 最好是在请求头中发送授权:Bearer cn389ncoiwuencr[jwt token] 它可以在网页和移动设备上使用【参考方案2】:

Android 和 iOS 应用程序不使用 cookie。您需要将 JWT 存储在本地存储中,并将其包含在每个 POST 请求中。推荐的方式是使用Authorization 标头,但这不是强制性的

要在本地存储令牌,您可以将完美的 cookie 用于 Web 应用程序以及用于 Android 和 iOS 的首选项

【讨论】:

我将查找有关Authorization 标头的信息。谢谢

以上是关于REST API 发送 JWT的主要内容,如果未能解决你的问题,请参考以下文章

我的 JWT 方法 - REST API

如何忽略发送到 Django REST 框架的 CSRF 令牌?

使用 JWT 时出错,还想将 JWT 令牌发送到其他 API

Axios - 防止在外部 api 调用上发送 JWT 令牌

如何在 Dotnet Core 中拦截请求 Token Jwt 以发送到其他 API?

django rest框架使用jwt RS256解码签名错误