WordPress REST API -如何在没有插件的情况下进行身份验证

sxpgvts3  于 2023-06-21  发布在  WordPress
关注(0)|答案(2)|浏览(252)

我已经使用WooCommerce REST API很多年了,我现在需要尝试将一些媒体文件上传到WordPress,这样我们就可以在将产品图像添加到现有产品时引用这些文件,因为WooCommerce REST API不允许直接上传图像文件。我还没有任何WordPress REST API实现的经验。
在这个阶段,我很困惑,我是否需要使用WordPress插件来允许我的远程应用程序(使用cURL)能够将文件上传到媒体端点?我看到了一些关于不使用基本身份验证的东西,但我看不到WordPress本身的任何设置来创建API密钥,就像你为WooCommerce所做的那样。
我是否需要使用插件来启用REST API访问,以允许远程上传媒体文件?据我所知,REST API不在WordPress核心中(我运行的是WordPress 4.9.2),但我看不到我在哪里为API请求设置身份验证?

k0pti3hp

k0pti3hp1#

有不同的身份验证方案,对于远程应用程序/集成,您通常需要一个插件来进行身份验证。
默认的想法是登录WordPress(例如wp-login.php),并授权该用户使用可能需要它的任何REST API功能。这是合适的示例用例是在管理 Jmeter 板中添加页面的插件,并且其与服务器的来回通过JS + REST API实现。不需要额外的插件或任何类似的东西,特别是现在REST API是核心的一部分。
对于集成,目前不错的选择包括OAuth插件,JWT和应用程序密码插件。
由于您使用的是CURL并临时加载数据,因此应用程序密码插件可能是一个非常简单的选择,易于管理。一旦插件被安装并激活,给定一个用户,您可以编辑他们的配置文件并添加一个或多个应用程序密码(并禁用它们)。这个想法是您要为每个应用程序使用一个不同的密码,在那里您要作为该用户进行身份验证。
要使用应用程序密码,请对“USERNAME:APPLICATION_PASSWORD”进行base64编码,然后将结果值与任何请求沿着合并到Authorization标头中。
假设您为 username 创建了一个应用程序密码,并且插件生成“WXYZ WXYZ WXYZ WXYZ WXYZ”。在shell提示符下,您可以生成所需的base64编码格式:

echo -n "username:WXYZ WXYZ WXYZ WXYZ WXYZ WXYZ" | base64

例如,假设base64的输出是:“AAAAAAAAABBBBBBBBBBBBCCCCCCCCCCCCCDDDDDDDDD ="。然后,您可以在任何请求的Authorization标头中使用此值:

curl --header "Authorization: Basic AAAAAAAAABBBBBBBBBBBBCCCCCCCCCCCCCCCDDDDDDDDDDD=" -X POST -d "title=Editing a Post Title with REST API" https://example.com.test/wp-json/wp/v2/posts/<ID>

使用SSL/TLS很重要,因为如果通过明文传输,攻击者可以嗅探出授权标头。
插件链接:
https://wordpress.org/plugins/application-passwords/

bq3bfh9z

bq3bfh9z2#

所以according to wordpress他们说有4种方法来验证。

  1. Cookies auth
    1.基本认证
    1.奥奥特
  2. JSON Web令牌
    不幸的是,所有这些方法都需要您编辑functions.php文件或下载插件。目前还没有解决的办法。
    我发现让它快速运行的最快方法是使用this plugin。或者,如果你不想安装插件,只需将put their code安装到主题的functions.php文件中,基本的身份验证就可以使用了。也许不是一个伟大的长期解决方案,但它会让你启动和运行。

相关问题