部署 WordPress OAuth Server (Provider)

部署 WordPress OAuth Server (Provider)

Barbatos Realms 最近在搞统一认证,聚合 Blessing Skin, Xenforo, Wordpress 等一系列乱七八糟的各种程序到 Wordpress 上。 偷懒为先,最好的解决方案自然是 OAuth 2,上述程序都有它的 Client 实现,对接甚是方便,但主要问题是,谁来做

Barbatos Realms 最近在搞统一认证,聚合 Blessing Skin, Xenforo, Wordpress 等一系列乱七八糟的各种程序到 Wordpress 上。

偷懒为先,最好的解决方案自然是 OAuth 2,上述程序都有它的 Client 实现,对接甚是方便,但主要问题是,谁来做 Server (Provider)

探索 WordPress 现有解决方案

OAuth 为关键字搜索,基本上都是 Client,而作为 Server 的只有 miniOrange 这一家独占。

我打赌不少人肯定都试过 miniOrange 的 Server

但问题在于,免费版本接近无法使用,3600 秒之后会话就会过期

进入配置页面,几乎所有配置都是灰色锁定状态。创建的 OAuth2 应用程序也有数量限制。

免费版本只能创建一个 OAuth 应用程序客户端,且大部分高级设定都要求 Premium 计划
付费价格也相当昂贵,且随着用户数量上升而变得更贵

替代方案

好在,WordPress 社区也有免费的替代方案,但不在 WordPress 的插件市场上,而是在:

不过该插件的插件文档相当落后,描述仍然是 OAuth1 的内容,不过下面有一个简单的教程可供参考:

安装 WP-API/OAuth2

在使用此插件之前,你最好正确配置你的 WordPress 伪静态设置。

下载和安装插件

访问 https://github.com/WP-API/OAuth2 并点击绿色的Code按钮,选择Download ZIP,或者你也可以直接戳这个链接

下载到的 ZIP 压缩包

将获得的压缩包内的内容上传到 wp-content/plugins 下,目录结构参考下图:

wp-content/plugins
wp-content/plugins/oauth2

完成后在 WordPress 后台启用插件。

启用插件

创建 OAuth 2 客户端

该插件的配置入口在 用户-> Applications,选择 Add New 来新建。

设置入口
创建客户端

对于 Callback 该怎么填,请参见你的应用程序的 OAuth2 插件说明,例如这是我的 Xenforo,它要求我填写 connected_account.php 的 URL。

重定向 URL(callback url)

最后点击 Create Client,你就得到了 Client Key 和 Client Secret,收好他们,不要泄露。

此处没有打码,写完文章我就删掉啦

最后回到上层菜单,批准你的 OAuth Client ,否则不会生效。

Approve it!

基本 URL

下面是该插件使用的 URL,可供参考:

Authorization Endpoint: https://你的网站/wp-json/oauth2/authorize
AccessToken Endpoint: https://你的网站/wp-json/oauth2/access_token
UserProfile Endpoint: https://你的网站/wp-json/wp/v2/users/me

如果你懒得调试返回值,下面是在 WordPress 6.1.1 的默认安装上的 /wp-json/wp/v2/users/me 的返回值:

{
	"id": 1, // 用户 ID
	"name": "Ghost_chu",
 // 用户昵称
	"url": "https://openid.barbatos.club", // 站点 URL
	"description": "", // 用户描述
	"link": "https://openid.barbatos.club/author/ghost_chu/", // 用户个人链接
	"slug": "ghost_chu", // 用户 Slug,由 WP 用户名转全小写生成
	"avatar_urls": { // 头像地址,数字代表头像宽高像素
		"24": "https://secure.gravatar.com/avatar/bf63bd3875e4d9129eef17f5ecb348c1?s=24&d=mm&r=g",
		"48": "https://secure.gravatar.com/avatar/bf63bd3875e4d9129eef17f5ecb348c1?s=48&d=mm&r=g",
		"96": "https://secure.gravatar.com/avatar/bf63bd3875e4d9129eef17f5ecb348c1?s=96&d=mm&r=g"
	},
	"meta": [], // 元数据
	"_links": { // 其他端点
		"self": [{
			"href": "https://openid.barbatos.club/wp-json/wp/v2/users/1"
		}],
		"collection": [{
			"href": "https://openid.barbatos.club/wp-json/wp/v2/users"
		}]
	}
}

登录 UI

下图是 OAuth 登录 UI,可供参考:

点击 Authorize 即可授权登录

管理 OAuth 授权,创建 Personal AccessToken

OAuth 2 for WordPress 提供了完整的授权管理机制,该功能可在 WordPress 的个人页面找到。

用户可以收回 OAuth 授权,亦或是创建 Personal AccessToken

效果演示

效果演示
Comment