freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

如何使用 Tencent CIAM 对 WordPress 站点进行登录保护
2021-11-08 17:38:35

一、概述

WordPress 是国际知名的开源博客软件和内容管理系统。全球约30%的网站(7亿5000个)是使用 WordPress 架设的。由于 WordPress 具备强大的模板系统、灵活的插件机制和优秀的插件生态,很多用户不但使用它来搭建博客网站和内容管理系统,还用它来建设各类商业网站和业务系统。

无论使用 WordPress 架设哪类系统,为用户提供登录认证功能都是一项基础且普遍的需求。然而,WordPress 平台自带的登录认证与用户管理功能十分有限,仅支持基于账号密码的认证方式,仅能通过邮箱、昵称等有限的属性对用户进行标识,且不具备对用户登录活动的统计分析和审计能力。

腾讯数字身份管控平台(公众版)(以下简称 Tencent CIAM),用于管理公众互联网用户的账号、注册和认证规则,打通分散的用户数据孤岛、帮助应用更好地进行用户识别与画像。

本文介绍如何使用 Tencent CIAM 对 WordPress 站点进行登录保护。读者将会看到,由于 Tencent CIAM 提供了方便、快捷的配置功能以及对互联网认证协议的标准化支持,WordPress 管理者无需编写一行代码,只需通过简单的配置操作即可实现对 WordPress 站点登录认证和用户管理能力的增强和加固。

二、WordPress 的默认登录功能

假设我们已经部署好了一个 WordPress 站点,其根路径是 https://WORDPRESS.SITE。首先我们来看看 WordPress 平台自带的用户管理和登录认证功能。

使用管理员登录后台后,可以通过左侧菜单的 用户 -> 所有用户 来查看 WordPress 的用户列表,以及查看用户详情、维护用户信息、重置密码。

1636361373_6188e49d9f29fee08ba15.png!small

WordPress 默认的登录页面只支持账号密码认证方式。

1636361382_6188e4a6201021a3427da.png!small

三、使用 Tencent CIAM 接管 WordPress 登录

Tencent CIAM 支持应用系统基于标准 OpenID Connect (OIDC) 协议接入,支持账号密码、短信OTP、邮箱OTP、微信PC扫码、微信小程序登录、支付宝登录等多种认证方式,支持用户通过表单注册或首次登录自动注册,且通过腾讯云控制台提供了便捷的界面对以上功能进行灵活的定制。

安装 WordPress OIDC 插件

我们的 WordPress 站点将通过标准 OIDC 协议与 Tencent CIAM 对接。因此,我们首先安装并启用 WordPress 的 OIDC 插件。在 WordPress 后台选择 插件 -> 安装插件,搜索并安装 OpenID Connect Generic Client 插件。

1636361391_6188e4af95839a4b2d26b.png!small

启用插件,再次访问登录页面时,发现页面上部增加了一个按钮 Login with OpenID Connect 。

1636361400_6188e4b80f5f2939ef767.png!small

由于还未对 Tencent CIAM 进行配置,此功能暂时还不可用。接下来我们配置 CIAM 。

创建 Tencent CIAM 应用

Tencent CIAM 的官方网址是 https://cloud.tencent.com/product/ciam。在开始使用 Tencent CIAM 前,我们需要先登录腾讯云,开通 CIAM 服务,并在 CIAM 中创建一个用户目录。假设我们已经创建了一个域名为 https://dev-wordpress.portal.tencentciam.com 的用户目录(用户目录的域名可以在 CIAM 控制台 个性化设置 -> 域名设置 中查看到)。

1636361410_6188e4c2ea7a3add3d51f.png!small

用户目录是 Tencent CIAM 的一个基础“容器”,用户的账号信息、用户访问的应用系统的相关配置、用户的认证方式等都将在用户目录中进行存储与配置。接下来,需要有一个用户目录中的应用来扮演 WordPress 站点的角色,实现 WordPress 与 Tencent CIAM 的对接。在 CIAM 的 应用管理 栏目中新建或使用一个现有应用,完成如下配置。

l   基本信息

l   应用类型选择 Web应用

l   根据实际情况填写应用名称、所属行业和应用描述

1636361420_6188e4cc30c800693f9c2.png!small

应用基本信息

l   参数配置

l   Redirect URI 填 https://WORDPRESS.SITE/wp-admin/admin-ajax.php?action=openid-connect-authorize

l   请使用您的 WordPress 站点根路径替换 https://WORDPRESS.SITE。下同。

l   Logout Redirect URI 填站点根路径 https://WORDPRESS.SITE

l   其他配置使用默认值

1636361430_6188e4d64b158b8d526f2.png!small

l   流程配置

l   启用登录流程,首选认证源选择系统自带的 账号密码认证,关联认证源暂不设置,Claims 是用户登录成功后 CIAM 将提供给 WordPress 的用户信息字段,此处我们选择常用的 用户昵称、用户名称、 邮箱地址 和 性别。

l   启用注册流程。认证属性选择 邮箱地址 和 用户名称 ,普通属性将 用户昵称 作为必填项,性别 作为选填项。

l   其他流程和协议管理暂时关闭。

1636361440_6188e4e027dd8fa2a4d5d.png!small

完成以上配置后,回到 应用管理 栏目的列表页面,启用该应用。

配置 WordPress OIDC 插件

接下来配置 WordPress OIDC 插件。在 WordPress 后台选择 设置 -> OpenID Connect Client,完成如下配置。

l   Login Type 选择默认的 OpenID Connect button on login form

l   Client ID 和 Client Secret Key 分别填入 CIAM 应用基本信息页面的 Client ID 和 Client Secret OpenID Scope 填 openid

l   Login Endpoint URL 填 https://dev-wordpress.portal.tencentciam.com/oauth2/authorize

l   请使用您的 CIAM 用户目录域名替换掉 https://dev-wordpress.portal.tencentciam.com。下同。

l   Userinfo Endpoint URL 填 https://dev-wordpress.portal.tencentciam.com/userinfo

l   Token Validation Endpoint URL 填 https://dev-wordpress.portal.tencentciam.com/oauth2/token

l   End Session Endpoint URL 填 https://dev-wordpress.portal.tencentciam.com/logout?client_id=CLIENT_ID&logout_redirect_uri=https://WORDPRESS.SITE

l   请分别使用您的 CIAM 用户目录域名、CIAM 应用 Client ID、和 WordPress 站点根路径替换以上的 https://dev-wordpress.portal.tencentciam.com、CLIENT_ID 和 https://WORDPRESS.SITE。

l   Identity Key 填默认的 sub

l   Nickname Key 填 nickname

l   Email Formatting 填 {email}

l   其他设置使用默认值或留空。

1636361450_6188e4ea52643662cc08b.png!small

运行效果

至此,我们的 WordPress 站点已经可以使用 Tencent CIAM 登录了。再次访问 WordPress 登录页,点击 Login with OpenID Connect,在弹出的 CIAM 登录页上使用现有用户登录或注册新用户。

1636361459_6188e4f3cac2f54ad84e8.png!small

登录成功后,将自动跳转回登录前访问的 WordPress 页面。

查看用户信息和登录日志

使用 Tencent CIAM 接管 WordPress 登录后,我们可以在 CIAM 控制台查看已注册用户的列表、最近登录时间和用户详细信息,还可以编辑用户详情、重置用户密码或锁定、冻结、删除用户。

1636361468_6188e4fcd5442ef837adf.png!small

在控制台的 审计管理 栏目可以查看用户登录的详细情况。

1636361477_6188e505bc50cc67f5087.png!small

四、进阶使用

允许用户以更多方式登录

Tencent CIAM 支持用户以多种方式进行登录认证。接下来,我们为 WordPress 站点增加邮箱OTP的登录方式。

通过 CIAM 控制台的 认证管理 -> 通用认证源 -> 新建认证源 -> 邮箱OTP认证 来创建一个新的邮箱OTP认证源。

填写认证源基本信息

1636361486_6188e50e66b5e9fd52db9.png!small

配置认证源策略

1636361496_6188e51824f946f5e04ab.png!small

创建后,在认证源列表页面开启该认证源。

创建并开启认证源后,还需要告诉我们的 WordPress 应用来使用这个认证源。在应用列表找到 WordPress 应用,选择 配置 -> 流程配置,在登录流程的关联认证源中勾选刚刚创建的邮箱OTP认证源,然后点击确定。

1636361508_6188e5249fc02b835d7c7.png!small

此时,再次访问 CIAM 登录页面,可以看到在原先账号密码认证的基础上新增了一个“邮箱登录”的选择。输入邮箱并点击“发送验证码”,即可通过邮箱中收到的一次性密码完成登录。

1636361518_6188e52e4091d574e0e1c.png!small

屏蔽 WordPress 登录页

当前,用户登录时会先访问 WordPress 的默认登录页,然后点击页面上的 Login with OpenID Connect 跳转到 Tencent CIAM 登录页进行登录。我们可以通过修改 WordPress OIDC 插件的配置来进一步优化用户登录体验。访问 设置 -> OpenID Connect Client,将第一项配置 Login Type 修改为 Auto Login - SSO,点击“保持更改”。

1636361529_6188e53985e78379bb248.png!small

用户再次登录时,将不再显示 WordPress 登录页,而是直接显示 Tencent CIAM 登录页。

为 WordPress 设置全站内容登录保护

某些场景下,我们希望用户首先完成注册登录,然后才能访问 WordPress 站点的内容。可以通过勾选插件的 Enforce Privacy 配置来实现此需求。

1636361540_6188e544d60ab96e51d97.png!small

启用登录保护

其他

Tencent CIAM 还支持微信登录、支付宝登录、用户数据同步、忘记用户名、忘记密码等丰富的功能,有兴趣的读者可以基于本文的内容做进一步探索实践。

Tencent CIAM的官网链接:https://console.cloud.tencent.com/ciam


# WordPress
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录