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
- 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).
- 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).
- Clique em "Adicionar nova senha de aplicativo" (dependendo da versão, o texto pode variar).
- 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)