Por que a autenticação da JWT
Estou criando um site que usa o Wordpress como back-end, e um aplicativo React + Redux como front-end, então estou puxando todo o conteúdo do front-end fazendo solicitações à API do Wordpress . Algumas solicitações (principalmente, solicitações POST) devem ser autenticadas, que é quando me deparei com o JWT.
O que precisamos
Para usar a autenticação do JWT com o Wordpress, primeiro precisamos instalar a Autenticação JWT para API WP REST . Como é explicado nas instruções do plugin, também precisamos modificar alguns arquivos principais do Wordpress. Em particular:
No arquivo .htaccess incluído na pasta raiz da instalação do Wordpress, precisamos adicionar as seguintes linhas:
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
No arquivo wp-config.php, também incluído na pasta raiz da instalação do Wordpress, precisamos adicionar estas linhas:
define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key'); // Replace 'your-top-secret-key' with an actual secret key.
define('JWT_AUTH_CORS_ENABLE', true);
Teste para ver se o JWT está disponível
Para verificar se agora podemos usar o JWT, inicie o Postman e faça uma solicitação para o 'índice' padrão da API do Wordpress:
http://example.com/wp-json/
Alguns novos pontos de extremidade, como /jwt-auth/v1
e /jwt-auth/v1/token
, devem ter sido adicionados à API. Se você puder encontrá-los na resposta à solicitação acima, isso significa que o JWT está disponível agora.
Como obter o token JWT
Vamos ficar no Postman no momento, e vamos solicitar um token para a API do Wordpress:
http://example.com/wp-json/jwt-auth/v1/token
A resposta conterá o token JWT, que é uma chave criptografada semelhante a esta:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODg4OFwvZm90b3Jvb20tbmV4dCIsImlhdCI6MTUyMjU5NzQ1MiwibmJmIjoxNTIyNTk3NDUyLCJleHAiOjE1MjMyMDIyNTIsImRhdGEiOnsidXNlciI6eyJpZCI6IjEifX19.hxaaT9iowAX1Xf8RUM42OwbP7QgRNxux8eTtKhWvEUM
Como fazer uma solicitação autenticada
Vamos tentar alterar o título de uma postagem com um ID de 300 como um exemplo de uma solicitação autenticada com a JWT.
Em Postman, escolha POST como o método e digite o seguinte endpoint:
http://example.com/wp-json/wp/v2/posts/300
Escolha Sem Autenticação na guia Autorização e adicione o seguinte na guia Cabeçalhos:
'Content-type': 'application/json',
'Authorization': 'Bearer jwtToken' // Replace jwtToken with the actual token (the encrypted key above)
Por fim, na guia Corpo, selecione as opções bruta e JSON (aplicativo / json) e, em seguida, no editor logo abaixo das opções, digite o seguinte:
{ "title": "YES! Authenticated requests with JWT work" }
Agora você pode clicar em ENVIAR. Procure na guia de resposta todos os dados sobre a postagem que solicitamos: o valor da chave do título agora deve ser YES! Authenticated requests with JWT work