【发布时间】:2017-11-03 12:10:24
【问题描述】:
我有两个 AWS 实例,一个用于 WordPress 网站,另一个用于 React 应用程序。为了将它们连接在一起,我使用“WP REST API - OAuth 1.0a 服务器”和“WP-API 的 JWT 身份验证”来访问 WP REST API。
我可以通过/wp-json/jwt-auth/v1/token 生成令牌,但是当我尝试访问任何其他端点或尝试通过/wp-json/jwt-auth/v1/token/validate 验证令牌时,我收到以下错误:
{
"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
我添加了以下代码以查看请求中是否存在任何授权标头,但没有任何
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 身份验证才能工作。
感谢任何帮助。
【问题讨论】:
标签: wordpress rest authentication jwt