最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】给crifan.com的WordPress网站REST的API添加JWT的token认证

WordPress crifan 1876浏览 0评论
折腾:
【已解决】用Python通过WordPress的REST API发布文章post
期间,后续REST的api的认证方式,还是JWT方便。
还是JWT去认证,每次请求提供个token,比较方便:
JWT Authentication for WP REST API – WordPress plugin | WordPress.org
插件中搜:JWT Authentication,去安装:
点击启用
竟然没有选项设置??
设置中也没有:
说是要安装:
GitHub – WP-API/WP-API
WP REST API v2.0 (formerly known as WP-API)
不过现在已整合到WordPress中了。
发现自己此处之前有安装过插件:
WP REST API
但是没启用:
去点击启用:
但是依旧没有配置页面去获取到JWT的token啊
JWT Authentication for WP REST API – WordPress plugin | WordPress.org
https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/#description
去看看到底如何使用JWT
需要去:
  • 改服务器配置
    • 支持Authorization的header
  • 改wp-config.php
    • 加key:define(‘JWT_AUTH_SECRET_KEY’, ‘your-top-secret-key’);
    • 支持CORS:define(‘JWT_AUTH_CORS_ENABLE’, true);
都弄好了,会多出个namespace:/jwt-auth/v1
即:访问https://www.crifan.com/wp-json/可以看到
然后再去写代码,去
POST /jwt-auth/v1/token
加上用户名和密码等参数
得到token
供后续api调用时使用
下面就具体去试试
JWT Authentication for WP REST API – WordPress plugin | WordPress.org
https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/
WP-API/WP-API: The WP REST API has been merged into WordPress core
先去服务器端看看是否有这个:
Authorization的header支持
http_authorizaion header · Issue #1 · Tmeister/wp-api-jwt-auth
期间去:
【已解决】CentOS7中如何远程SSH通过秘钥登录
此处:
[root@crifan www.crifan.com]# pwd
/data/wwwroot/www.crifan.com
[root@crifan www.crifan.com]# ls -lha
总用量 2.0M
drwxr-xr-x 12 www  www  4.0K 3月   3 20:12 .
drwxr-xr-x  5 root root 4.0K 5月  24 2019 ..
-rwxr-xr-x  1 www  www   613 6月  14 2017 400.shtml
...
是没看到有.htaccess文件
centos WordPress add Authorization
Basic Authentication not working with WP REST APIv2 · Issue #35 · WP-API/Basic-Auth
[root@crifan www.crifan.com]# cat .htaccess
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
再去给wp-config.php加上JWT_AUTH_SECRET_KEY
[root@crifan www.crifan.com]# cat wp-config.php
...
//define('WP_ALLOW_REPAIR', true);

define('JWT_AUTH_SECRET_KEY', 'xxxxxxx');
去确认此处已安装:
wp-api-jwt-auth
已安装:JWT Authentication for WP-API
且已启用
点击 查看详情 可以看到就是:
在路上 › 安装插件 — WordPress
前面看到的那个:
重复服务器中的php:
先看看状态:
[root@crifan www.crifan.com]# service php-fpm status
Redirecting to /bin/systemctl status php-fpm.service
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2019-11-25 13:53:38 CST; 3 months 11 days ago
     Docs: http://php.net/docs.php
 Main PID: 4924 (php-fpm)
   CGroup: /system.slice/php-fpm.service
           ├─ 1312 php-fpm: pool www
           ├─ 1912 php-fpm: pool www
           ├─ 4048 php-fpm: pool www
           ├─ 4176 php-fpm: pool www
           ├─ 4924 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
           ├─ 5176 php-fpm: pool www
...
去重启
[root@crifan www.crifan.com]# service php-fpm restart
Redirecting to /bin/systemctl restart php-fpm.service
[root@crifan www.crifan.com]# service php-fpm status
Redirecting to /bin/systemctl status php-fpm.service
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since 五 2020-03-06 21:51:44 CST; 9s ago
...
重启好了。
然后去:
【已解决】WordPress的jwt-auth用Postman去测试生成token和验证token
【总结】
至此貌似就已经创建好了jwt的token。供后续使用了。
此处安装和启用插件:
JWT Authentication for WP REST API – WordPress plugin | WordPress.org
https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/
然后去给WordPress所在CentOS服务器中
WordPress根目录中添加:
.htaccess
内容是:
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
再去编辑wp-config.php,加上 :
define('JWT_AUTH_SECRET_KEY', 'xxxxxx');
然后重启php
service php-fpm restart
然后再去生成token
POST https://www.yourWebsite.com/wp-json/jwt-auth/v1/token

{
    "username": "wordpress_username",
    "password": "wordpress_password"
}
返回:
{
    "token": "eyJ0eXAiOxxxxxxxxxxxxHYBhtuzc",
    "user_email": "[email protected]",
    "user_nicename": "xxx",
    "user_display_name": "xxx"
}
验证token
POST https://www.crifan.com/wp-json/jwt-auth/v1/token/validate

headers:
Authorization: Bearer eyJ0exxxxxbXjLYB4
返回:
{
    "code": "jwt_auth_valid_token",
    "data": {
        "status": 200
    }
}
就说明token正常。

转载请注明:在路上 » 【已解决】给crifan.com的WordPress网站REST的API添加JWT的token认证

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
83 queries in 0.188 seconds, using 22.18MB memory