无法在 wordpress REST api 上设置 OAuth

Posted

技术标签:

【中文标题】无法在 wordpress REST api 上设置 OAuth【英文标题】:Can not set OAuth on wordpress REST api 【发布时间】:2018-09-27 01:39:53 【问题描述】:

我想在我的 Wordpress 网站中实现带有 authorization 的 Rest api。 Wordpress 版本为4.9.5REST api 版本为2.0-beta15。为了保护我的 API,我需要在我的网站上实现 OAuth,首先,我从 link 和 useful link 实现 WordPress REST API – OAuth 1.0a 服务器。但是插件有这些问题:

Rest-calls 在没有授权的情况下仍然可以工作,每个未经授权的用户都可以调用我的 rest-apis。 我想在我的 android 应用程序中实现这个,所以我必须在后台处理所有步骤,但是使用这个插件,我应该向用户显示许多 webView,用户应该填写它们,最终的令牌也会显示给用户在 webview 中,这对我来说听起来不太好。

所以我寻找另一个插件并找到 WP-API 的 JWT 身份验证。这个插件更容易和方便。我按照说明进行操作,可以获取令牌并添加到请求标头以发出请求,如果它是有效响应,则为 200,如果不需要验证。一切似乎都很好!

但同样的问题:

每个 REST API 甚至都可以在没有授权标头的情况下工作,如果我不放标头,结果是 200 并且所有请求都像以前一样工作,无需任何授权

尽管有文件说:

获得令牌后,您必须将其存储在您的 应用程序,例如。在 cookie 中或使用本地存储。

从此时起,您应该将此令牌传递给每个 API 调用

所以现在我看到我没有限制 API 调用在两个插件中都有 Authorization 标头,我如何实现这一点以及最好的解决方案是什么?

【问题讨论】:

【参考方案1】:

我终于用这个插件解决了这个问题:

Disable REST API and Require JWT / OAuth Authentication

正如它的名字所说,它会做我想要的。它适用于我使用的两个插件

WP REST API 的 JWT 身份验证 WP OAuth 服务器

并限制所有未经授权且工作正常的 api 调用。 所以我的最佳实践是 JWT 用于 Oauth + 禁用 REST API 并要求 JWT / OAuth 身份验证,它们是在 android 应用程序中为 word-press 实现 OAuth 的非常好的组合。

【讨论】:

以上是关于无法在 wordpress REST api 上设置 OAuth的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Wordpress 中使用 REST API 获得响应

无法在 wordpress 5.8.1 中访问 woocommerce rest api

Wordpress 5.4。 REST API通过子弹无法工作

无法显示来自 Wordpress REST API 自定义端点的自定义字段

Wordpress Rest API:返回 100 多个结果

Wordpress Rest Api 在自定义端点上使用 POST 更新内容