Azure上Bitnami WordPress编辑用户时‘Application Passwords’错误及API调用问题
解决Bitnami WordPress无HTTPS下的API认证问题
一、优先方案:开启HTTPS以使用原生应用密码
应用密码功能强制要求HTTPS,Bitnami环境配置SSL非常便捷:
- 执行Bitnami自带的证书配置脚本:
sudo /opt/bitnami/bncert-tool - 按照向导完成Let's Encrypt证书的申请和配置,自动开启HTTPS。
- 配置完成后回到WordPress后台的用户编辑页面,即可正常生成应用密码,将其替换你代码中的原生密码,原有的Basic Auth逻辑可直接使用,且安全性更高。
二、无需HTTPS的替代认证方案
如果暂时无法启用HTTPS,可选择以下两种方式:
1. JWT认证插件
安装JWT Authentication for WP REST API插件,步骤如下:
- 激活插件后,编辑WordPress根目录下的
wp-config.php,添加配置:define('JWT_AUTH_SECRET_KEY', '生成一个随机字符串作为密钥'); define('JWT_AUTH_CORS_ENABLE', true); - 修改Python代码为JWT认证逻辑:
import requests import json # 获取JWT Token auth_url = "http://my-site/wp-json/jwt-auth/v1/token" auth_data = { 'username': 'user', 'password': '你的WordPress原生密码' } token_response = requests.post(auth_url, data=auth_data) token = token_response.json()['token'] # 发布文章 api_url = "http://my-site/wp-json/wp/v2" headers = {'Authorization': f'Bearer {token}'} post_data = { 'date' : '2023-05-24T10:00:00', 'title' : 'Hello World', 'status' : 'publish', 'content' : 'This is my first post created using rest API' } post_response = requests.post(f"{api_url}/posts", headers=headers, json=post_data) print(post_response)
注意:HTTP环境下JWT传输存在安全风险,仅建议在测试环境使用。
2. XML-RPC(不推荐)
- 进入WordPress后台「设置-撰写」,启用XML-RPC功能。
- 使用
wordpress_xmlrpc库实现发布:from wordpress_xmlrpc import Client, WordPressPost from wordpress_xmlrpc.methods.posts import NewPost wp_client = Client('http://my-site/xmlrpc.php', 'user', '你的WordPress原生密码') new_post = WordPressPost() new_post.title = 'Hello World' new_post.content = 'This is my first post created using XML-RPC' new_post.date = '2023-05-24T10:00:00' new_post.post_status = 'publish' wp_client.call(NewPost(new_post))
缺点:XML-RPC安全性极低,易被暴力破解,不建议生产环境使用。
三、绕过HTTPS限制使用应用密码
安装Application Passwords Without SSL插件,可直接绕过HTTPS限制启用原生应用密码功能,生成应用密码后替换你原有代码中的password字段即可,无需修改代码逻辑。
内容的提问来源于stack exchange,提问作者Frankie Chiu
相关产品推荐
相关产品推荐

