wordpress - 验证 WordPress REST API JWT token 时出现 jwt_auth_no_auth_header 错误

标签 wordpress rest authentication jwt

我有两个 AWS 实例,一个用于 WordPress 网站,另一个用于 React 应用程序。为了将它们连接在一起,我使用“WP REST API - OAuth 1.0a 服务器”和“WP-API 的 JWT 身份验证”来访问 WP REST API。

我可以通过 /wp-json/jwt-auth/v1/token 生成 token 但是当我尝试访问任何其他端点或尝试通过 /wp-json/jwt-auth/v1/token/validate 验证 token 时我收到以下错误:

{
  "code": "jwt_auth_no_auth_header",
  "message": "Authorization header not found.",
  "data": {
    "status": 403
  }
}

我查了一下,发现很少有东西可以添加到 .htaccess .我添加了所有我能找到但没有成功的东西。
RewriteEngine On
RewriteBase /

# Enable HTTP Auth
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

# WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# For SetEnvIf Authorization
#RewriteRule (.*) - [env=myenv:1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
#SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0

我添加了以下代码以查看请求中是否存在任何授权 header ,但没有
add_filter( 'rest_pre_dispatch', 'prefix_show_request_headers', 10, 3 );
function prefix_show_request_headers( $result, $server, $request ) {
    $result = $request->get_headers();
    return $result;
}

在这里(https://github.com/Tmeister/wp-api-jwt-auth/issues/6)我读到 WordPress 可能默认尝试通过 cookie 方法进行身份验证,并且抛出错误并且没有达到 JWT 身份验证,所以我添加了这段代码但仍然没有成功
add_filter( 'rest_authentication_errors', '__return_true' );

最后,我添加了“JSON 基本身份验证”插件,该插件还在标题中发送用户名:密码并且它可以工作。所以我不确定标题被剥离是否有问题。由于不建议将其用于生产服务器,因此我需要 JWT 身份验证才能工作。

任何帮助表示赞赏。

最佳答案

如果其他人遇到这个问题,我添加到 .htaccess 的这段代码可能不工作

# Enable HTTP Auth
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

所以在插件文件jwt-authentication-for-wp-rest-api/class-jwt-auth-public.php ,查看名为 validate_token 的函数, 在 $auth 之后检查失败我添加了这段代码:
if (!$auth) {
    $allHeaders = getallheaders();
    $auth = isset($allHeaders['Authorization']) ? $allHeaders['Authorization'] : false;
}

这将得到 Authorization header 和 JWT 将按预期工作

关于wordpress - 验证 WordPress REST API JWT token 时出现 jwt_auth_no_auth_header 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44322866/

相关文章:

php - MAMP Pro for multiple wordpress 安装连接错误

rest - 使用REST客户端调用multipart/form-data Rest web service

用于搜索的 RESTful URL 设计

python - 使用 python mechanize 登录具有 NTLM 身份验证的页面

azure - 无法更改逻辑应用上的身份验证帐户

wordpress - wc auth 中 woocommerce 回调的 SSL 错误

php - 注释中的 "@"符号是什么意思?

App Engine Flexi 上的 Wordpress - (gcloud.app.deploy) 错误响应 : [13] An internal error occurred during deployment

Wordpress:自定义帖子类型:使用自定义字段或分类法?

node.js - 为什么 req.body 在 POSTMAN 中返回 undefined