2026年11月12日

2026年11月12日

Senhas de aplicativos do WordPress: criar, revogar e usar na REST API

Este artigo é uma edição localizada do original em japonês. Ler o original em japonês

A senha de aplicativo (Application Password) é uma senha exclusiva, adicionada no WordPress 5.6, para entregar a APIs REST e a ferramentas externas. Com ela, você não precisa revelar a senha de login de verdade: pode criar uma por ferramenta e revogar só as que deixarem de ser necessárias. Este artigo explica os requisitos, como criar e revogar (painel, WP-CLI e PHP), como usar na REST API e o que verificar quando algo não funciona. O conteúdo foi conferido, em novembro de 2026, na documentação para desenvolvedores e no código-fonte do WordPress.

O que as senhas de aplicativos podem e não podem fazer

  • Servem para autenticar na REST API e no XML-RPC. Na REST API, o nome de usuário e a senha de aplicativo são enviados por autenticação Basic.
  • Não servem para entrar no painel de administração (wp-login.php). Não são para pessoas fazerem login, e sim para programas e ferramentas.
  • As permissões são as mesmas do usuário que a criou. Se um administrador criar uma, a ferramenta que tem essa senha pode fazer as mesmas operações que um administrador. Se você só quer delegar a publicação de posts, crie um usuário com a função de autor ou editor e gere a senha com esse usuário.
  • Podem ser revogadas uma a uma. Também são registrados a data e o endereço IP do último uso.

Requisitos de uso

Por padrão, as senhas de aplicativos só podem ser usadas em sites com HTTPS ou em sites cujo tipo de ambiente é local. A verificação do WordPress é esta (wp_is_application_passwords_supported()).

return is_ssl() || 'local' === wp_get_environment_type();

Em um site que continua em HTTP, o campo não aparece na tela de perfil, porque a senha seria enviada por uma comunicação sem criptografia.

Crie pelo painel de administração

  1. Abra "Usuários → Perfil" (Users → Profile). Para a senha de outro usuário, edite o usuário em "Usuários → Todos os usuários" (Users → All Users).
  2. Na seção "Senhas de aplicativos" (Application Passwords), mais abaixo, digite em "Nome da nova senha de aplicativo" um nome que indique a finalidade (por exemplo: script de publicação, Zapier).
  3. Clique em "Adicionar nova senha de aplicativo" (dependendo da versão, o texto pode variar).
  4. Anote a senha de 24 caracteres exibida. Se você sair dessa tela, ela nunca mais será mostrada.

A senha é exibida com espaços a cada 4 caracteres, como em abcd EFGH 1234 ijkl MNOP 6789, mas a autenticação funciona com ou sem os espaços.

Para revogar, clique no botão de revogar da linha correspondente na lista da mesma seção. Também é possível revogar todas de uma vez em "Revogar todas as senhas de aplicativos".

Crie, consulte e apague com o WP-CLI

# Cria (use --porcelain para mostrar só a senha)
wp user application-password create admin "Script de publicação" --porcelain

# Lista (o uuid é usado para apagar)
wp user application-password list admin --fields=uuid,name,created,last_used,last_ip

# Apaga uma
wp user application-password delete admin 6633824d-c1d7-4f79-9dd5-4586f734d69e

# Apaga todas as desse usuário
wp user application-password delete admin --all

No lugar de admin, você pode indicar o nome de usuário, o e-mail ou o ID do usuário. Troque o uuid pelo valor exibido no resultado do list.

Crie, consulte e apague com PHP

Para tratar a partir de um plugin ou similar, use a classe WP_Application_Passwords.

<?php
$user_id = 2; // ID do usuário em questão

// Cria. Em caso de sucesso, retorna um array [senha em texto puro, informações salvas]
$result = WP_Application_Passwords::create_new_application_password(
	$user_id,
	array( 'name' => 'Script de publicação' )
);

if ( is_wp_error( $result ) ) {
	error_log( $result->get_error_message() );
} else {
	list( $password, $item ) = $result;
	// $password está em texto puro. Só dá para obtê-la agora, então entregue-a ao usuário de forma segura
	error_log( 'created: ' . $item['uuid'] );
}

// Obtém a lista (name, uuid, created, last_used, last_ip etc.)
foreach ( WP_Application_Passwords::get_user_application_passwords( $user_id ) as $item ) {
	error_log( $item['name'] . ' ' . $item['uuid'] );
}

// Apaga uma
// WP_Application_Passwords::delete_application_password( $user_id, $uuid );

O que fica armazenado é apenas o valor com hash, e a senha em texto puro só pode ser obtida no instante da criação.

Use na REST API

No curl, a autenticação Basic é feita com -u nome_de_usuário:senha_de_aplicativo. Primeiro, confirme se ele retorna os seus dados como o usuário autenticado.

# Verifica se a autenticação funcionou (se retornar os seus dados de usuário, deu certo)
curl -u "admin:abcd EFGH 1234 ijkl MNOP 6789" https://example.com/wp-json/wp/v2/users/me

# Cria um post como rascunho
curl -u "admin:abcd EFGH 1234 ijkl MNOP 6789" \
  -X POST https://example.com/wp-json/wp/v2/posts \
  -H "Content-Type: application/json" \
  -d '{"title":"Post de teste","content":"Corpo do texto","status":"draft"}'

Para chamar a REST API de outro site WordPress a partir do PHP, monte você mesmo o cabeçalho Authorization.

<?php
$response = wp_remote_get(
	'https://example.com/wp-json/wp/v2/users/me',
	array(
		'headers' => array(
			'Authorization' => 'Basic ' . base64_encode( 'admin:abcd EFGH 1234 ijkl MNOP 6789' ),
		),
	)
);

if ( ! is_wp_error( $response ) ) {
	error_log( wp_remote_retrieve_response_code( $response ) );
}

A senha do exemplo é só uma amostra. Não escreva senhas reais diretamente no código; guarde-as em um lugar não público, como variáveis de ambiente ou arquivos de configuração.

O que verificar quando a autenticação não funciona

Sintoma O que verificar
O perfil não mostra a seção "Senhas de aplicativos" Se o site está em HTTPS. Se não foi desativada por um filtro ou plugin
/wp/v2/users/me retorna 401 Se o nome de usuário está correto (o nome de login, não o nome de exibição). Se a senha não foi revogada
Mesmo estando certo, é tratado como não logado O servidor pode não estar repassando o cabeçalho Authorization ao PHP. No Apache, confira se a linha RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] do .htaccess do WordPress continua lá
Só algumas URLs falham Se plugins de segurança ou um WAF estão restringindo a REST API

Os erros da REST API em geral estão explicados em "Como corrigir erros da REST API".

Desative as senhas de aplicativos

Em sites que não as usam, dá para desativar o recurso inteiro. Escreva no functions.php do tema ou em um plugin próprio.

<?php
// Desativa para o site inteiro
add_filter( 'wp_is_application_passwords_available', '__return_false' );

Para permitir só a alguns usuários, use o filtro por usuário. O exemplo a seguir permite apenas a usuários com permissão de administrador (manage_options).

<?php
add_filter( 'wp_is_application_passwords_available_for_user', function ( $available, $user ) {
	return $available && user_can( $user, 'manage_options' );
}, 10, 2 );

Para restringir o acesso à própria REST API, consulte "Como restringir o acesso à REST API".

Cuidados na operação

  • Crie uma senha diferente para cada ferramenta e use nomes que indiquem a finalidade. Assim, se uma vazar, você revoga só a dessa ferramenta.
  • Revogue de imediato as das ferramentas que deixarem de ser usadas. As que têm a data de último uso muito antiga na lista podem não estar sendo usadas.
  • Reavalie se é realmente necessário entregar a senha de administrador a serviços externos e crie a senha com um usuário que tenha só as permissões necessárias.

Dúvidas sobre WordPress? Quem publica este site fica no Japão e responde em japonês. Contato (em japonês)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲