JWT:如何在标头中发送授权?

Posted

技术标签:

【中文标题】JWT:如何在标头中发送授权?【英文标题】:JWT: How send authorization in header? 【发布时间】:2015-04-25 05:54:16 【问题描述】:

我正在使用 JWT (https://github.com/tymondesigns/jwt-auth) 在我的 API 中生成会话令牌。

我进行了所有相关设置以作为作者的文档。

连接会话后,我使用 URL 来返回我的类别数据。当我直接在 URL 中传递令牌时,它可以工作。如下:

http://api.domain.com/categories?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9kZXYuaW1pYXZpcFwvYXBpXC9hdXRoXC9hdXRoZW50aWNhdGUiLCJzdWIiOiIxIiwiaWF0IjoxNDIxODQyMzU4LCJleHAiOjE0MjE5Mjg3NTh9.-nqKoARKc2t1bI2j5KFEP_zRU8KCki_dghKe6dtAedY

只有我需要在我的请求头中使用身份验证承载传递令牌。但不起作用。看看我的经历:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9kZXYuaW1pYXZpcFwvYXBpXC9hdXRoXC9hdXRoZW50aWNhdGUiLCJzdWIiOiIxIiwiaWF0IjoxNDIxODQyMzU4LCJleHAiOjE0MjE5Mjg3NTh9.-nqKoARKc2t1bI2j5KFEP_zRU8KCki_dghKe6dtAedY

可能出了什么问题?

在 JWT 文档中提到了我上面使用的表单的使用。但不起作用。

【问题讨论】:

【参考方案1】:

如果您使用的是 Apache,那么由于 Symfony 中的 this known issue,标头可能无法通过

如果是这种情况,您需要将以下内容添加到您的虚拟主机:

RewriteEngine On
RewriteCond %HTTP:Authorization ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

【讨论】:

【参考方案2】:

请确保您的后端(服务器端)代码中有以下行 这是针对 php 的。

header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization');

请注意,上面一行我们允许“授权”标题。

一旦您在服务器端代码中有上述行,那么您可以在函数下方(如果您使用 php 编码)来获取数组中的所有标头。

getallheaders();

【讨论】:

确实没有服务器端标头。根据他的说法添加,但它甚至不起作用。但我认为现在它与应用程序有关。

以上是关于JWT:如何在标头中发送授权?的主要内容,如果未能解决你的问题,请参考以下文章

在 HTTP-Request 中使用 JWT 发送授权标头

如何设置授权标头(JWT)

如何在 Angular 中从服务器获取带有 jwt 令牌的响应标头

如果标头中不存在 JWT 令牌,如何执行一些逻辑?

Spring Boot:在标头中发送 JWT(OAuth)

C# .NET 5.0 MVC JWT 中间件授权标头