post

Corrigir problema de permissão REST API WordPress Bitnami EC2

Publicado em: 12/06/2019 / Atualizado em: 12/06/2019

Categorias: BitnamiBlogWordpress

Recentemente ao instalar uma instancia na amazon web service (AWS) utilizando o empacotador da Bitmani, me deparei com um problema quando precisei usar a REST API json do wordpress para criar posts de um ambiente externo, mesmo com os dados todos corretos, o servidor estava barrando o acesso do usuário por não reconhecer os dados de autorização enviados pelo “header”, retornando um erro de “Sem permissão para criar posts com este usuário” com status de “erro 401”.

{
    "code": "rest_cannot_create",
    "message": "Sem permissão para criar posts com este usuário.",
    "data": {
        "status": 401
    }
}

Para habilitar a REST API do WordPress com autenticação, o primeiro passo seria instalar um plugin chamado de Basic Auth para wordpress.

1. Instalando o plugin

O plugin pode ser obtido neste link ( https://github.com/WP-API/Basic-Auth ), copiando todo o código dentro do arquivo “basic-auth.php” ou fazendo o download do zip em “clone or download > download zip”.

Pagina do plugin Basic Auth para REST API WordPress no site Github.com

Navegue até a pasta de plugins do wordpress (…/wp-content/plugins), crie um diretório chamado “Basic-Auth”, e adicione ou crie o arquivo “basic-auth.php”.

Segue processo realizado via linha de comando:

$ cd /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins
$ git clone https://github.com/WP-API/Basic-Auth.git
$ cd Basic-Auth
$ sudo rm -rf .git

OBS: O processo a cima foi feito com o terminal git para windows (https://gitforwindows.org/), você pode também fazer o download manual ou copiar o conteúdo do arquivo manualmente para seu servidor.

2. Definindo permissões

Rode o código no terminal para conceder permissões corretas para o usuário que esta gerenciando o seu servidor.

$ sudo chown bitnami:daemon -R /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins/Basic-Auth
$ sudo chmod g+w -R  /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins/Basic-Auth

3. Ative o plugin

Acesse o painel administrativo do wordpress, vá em “Plugins > Plugins Instalados”, localize o plugin (deve estar com o nome de “JSON Basic Authentication”), e clique em ativar.

4. Modificar as configurações do Apache

Acesse o arquivo de configurações principal do apache server configurado pelo empacotador da Bitnami da seguinte maneira:

$ sudo vim /opt/bitnami/apps/wordpress/conf/httpd-app.conf

Ao abrir o arquivo, navegue até o final, assim que localizar um trecho de código como este:

    RewriteEngine On
    #RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [S=1]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php [L]

Adicione acima dele as seguintes linhas:

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

Seu código deve ficar mais ou menos assim:

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
    
    RewriteEngine On
    #RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [S=1]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php [L]

Salve o arquivo clicando na tecla “esc” do seu teclado, para iniciar o dialogo e digite exatamente como abaixo:

:wq

5. Reinicie o apache

Para reiniciar o apache server do empacotador Bitnami WordPress, você deve digitar o seguinte comando em seu terminal:

$ sudo /opt/bitnami/ctlscript.sh restart apache

Após o apache server reiniciar, seu site wordpress já esta habilidade para receber requisições via REST API.

Esta explicação foi retirada do canal oficial de duvidas da Bitnami.

Confira o link: https://community.bitnami.com/t/wordpress-rest-api-basic-authentication-header-not-working/59090/6

BÔNUS

Como posso criar meu primeiro post com a REST API ?

Segue link de um bom exemplo em PHP (https://gist.github.com/andrewahead4/489e6422feb5be901143)

Não cheguei a testar o código mas parece que esta tudo certo.

Outra maneira de sempre testar uma API sem precisar iniciar servidor ou preparar ambiente é usar o Postman (https://www.getpostman.com/).

Publicações recomendadas:


Inscreva-se em Nossa News:

Seja notificando sempre que tiver conteúdo novo disponível no meu canal do Youtube ou artigo no meu Blog.

Bruno Devs News


Link Curto para Compartilhamento

Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link curto abaixo. Basta clicar em cima do link para copiar.

bruno.art.br/pb/115

ID de Referência: 115

Sugira uma publicação

Envie uma mensagem e sugira um publicação sobre um assunto que tenha dificuldades de resolver.

Clique aqui e entre em contato


Comentários