WordPress 高级管理手册

title: "应用密码" post_status: publish comment_status: open taxonomy: category: - advanced-administration-handbook post_tag: - Security - Repos - Data


应用密码

应用密码是 WordPress 的一项功能,允许您为程序化访问(例如移动应用、集成或脚本)生成可撤销的、按应用分配的凭证。其设计目的是避免与第三方工具共享您的主账户密码。

应用密码于 WordPress 5.6(2020 年 12 月)引入。请参阅:应用密码:集成指南

什么是应用密码? {#what-are-application-passwords}

应用密码是:

应用密码不能用于通过 wp-login.php 登录 wp-admin。它们适用于应用程序和脚本,而非用户在登录表单中手动输入凭据。

何时使用应用程序密码 {#when-to-use-application-passwords}

当你需要一个工具以 WordPress 用户身份进行身份验证,但又不想提供该用户的主密码时,请使用应用程序密码,例如:

如果使用场景是浏览器中的交互式登录,请使用强密码并考虑启用两步验证(也称为双因素身份验证或 2FA):两步验证

在 wp-admin 中创建应用密码 {#creating-an-application-password-in-wp-admin}

  1. 以需要凭据的用户身份(或以管理员身份编辑该用户)登录 wp-admin。
  2. 转到 用户 → 个人资料(或 用户 → 所有用户 → 编辑 以编辑其他用户)。
  3. 找到 应用密码 部分。
  4. 输入一个描述性名称(例如:CI 部署机器人我的 iPhone 应用报告集成)。
  5. 生成密码并 立即复制/保存(之后将不再显示)。

WordPress 将应用密码分组显示以提高可读性。使用时可以带空格或不带空格(验证前会去除空格)。

使用应用密码 {#using-an-application-password}

应用密码通常通过 HTTP 基本认证(RFC 7617)使用。使用基本认证时,客户端会在 Authorization HTTP 头部中发送凭据。

该头部值是通过对字符串 username:password 进行 Base64 编码构建的:

Authorization: Basic BASE64_ENCODED_CREDENTIALS

使用应用密码时:

由于基本认证凭据如果在未加密的情况下通过网络发送可能会被截获,因此应始终使用 HTTPS。参见:HTTPS

示例(使用 curl 的 REST API 请求):

curl --user "USERNAME:APPLICATION_PASSWORD" https://example.com/wp-json/wp/v2/users/me

管理与轮换应用密码 {#managing-and-rotating-application-passwords}

在用户个人资料的同一应用密码区域,您可以:

操作最佳实践是将应用密码视为机密信息:

使用 WP-CLI 管理应用程序密码 {#managing-application-passwords-with-wp-cli}

如果您通过 SSH 管理 WordPress,WP-CLI 可以创建、列出、更新和撤销应用程序密码。

示例:

# 为用户 ID 123 创建一个应用程序密码(密码仅显示一次)。
wp user application-password create 123 "myapp"

# 为用户 ID 123 创建并仅输出密码(适用于脚本/CI)。
wp user application-password create 123 "myapp" --porcelain

# 列出用户 ID 123 的密码并显示常用字段。
wp user application-password list 123 --fields=uuid,name,created,last_used,last_ip

# 通过 UUID 删除用户 ID 123 的特定应用程序密码。
wp user application-password delete 123 <uuid>

官方命令参考:wp user application-password

可用性与禁用 {#availability-and-disabling}

默认情况下,当请求通过 HTTPS 提供服务时,应用程序密码功能可用。其可用性可通过过滤器进行自定义(或禁用)。

若您不希望网站启用应用程序密码功能,可通过代码(例如在必备插件中)使用 wp_is_application_passwords_available 过滤器来禁用。如需更精细的控制(例如仅允许特定用户/角色使用),请使用 wp_is_application_passwords_available_for_user 过滤器。

故障排除 {#troubleshooting}

如果身份验证失败(401/403)或用户配置文件中未显示应用密码: