Procurar Resultados :

×

Cadastrar Contate-nos

Guia para proteger APIs REST do WordPress com autenticação básica

Autenticação básica do WordPress para APIs REST protege o acesso aos endpoints do WordPress validando solicitações de API com um token gerado a partir de um nome de usuário e senha ou credenciais do cliente. Este método de autenticação confirma a identidade do usuário ao interagir com o serviço web, garantindo que apenas usuários autorizados possam acessar a API REST do WordPress.



O plugin Basic Auth no WordPress ajuda a proteger APIs REST usando a Autenticação Básica. Com esse método, cada solicitação de API envia credenciais (nome de usuário ou e-mail e senha) codificadas em base64, garantindo uma comunicação segura entre seu site WordPress e aplicativos externos.


Autenticação da API REST do WordPress

O plugin de autenticação da API REST do WordPress oferece segurança contra acesso não autorizado às suas APIs REST do WordPress. Nosso plugin oferece diversos métodos de autenticação, como Autenticação Básica, Autenticação por Chave de API, Autenticação OAuth 2.0 e Autenticação JWT.

Saber Mais   


Para configurar o WP API Basic Auth, você precisa instalar um Plug-in de autenticação da API REST do WordPress. Este plugin permite que a API REST do WordPress aceite credenciais de autenticação básica para acesso seguro.


Guia passo a passo:


  • Etapa 1: instalar o plug-in - Procure por "Autenticação REST API para WP" no repositório de plugins do WordPress e instale-o. Este plugin habilitará a Autenticação Básica da API REST no seu site.
  • Etapa 2: ativar o plug-in - Após a instalação, ative o plugin no painel do WordPress acessando Plugins → Plugins instalados e clicando em "Ativar" ao lado do plugin de autenticação da API REST.
  • Etapa 3: Configurar autenticação - Abra as configurações do plugin e siga os passos para configurar a Autenticação Básica para sua API REST. Navegue até a página de configuração do plugin para definir seu método de autenticação.


1. Usando nome de usuário e senha para interação segura com a API REST do WordPress


Se você estiver desenvolvendo um aplicativo Android ou iOS que permita aos usuários postar seus próprios feeds ou blogs, garantir interações seguras e autenticadas com a API REST do WordPress é crucial.

Como gerenciar com segurança a autenticação do usuário:

  • Use a autenticação básica do WordPress: Implemente a API REST de Autenticação Básica do WordPress com os nomes de usuário e senhas dos usuários. Este método garante que as solicitações feitas através do seu aplicativo sejam autenticadas com segurança.
  • Autenticar solicitações de usuários: Quando um usuário faz login no seu aplicativo, uma sessão é criada e as credenciais do usuário são enviadas em um formato criptografado dentro do cabeçalho de Autorização Básica.
  • Gerenciar Permissões: Com base nas permissões do usuário no WordPress, a API REST determina as ações que ele pode realizar e o conteúdo que pode acessar. Isso ajuda a controlar os recursos do usuário e a manter interações seguras com seu site WordPress.

Ao usar a Autenticação Básica do WordPress com credenciais de usuário, você garante que as ações de cada usuário sejam devidamente autenticadas e autorizadas, fornecendo um ambiente seguro para conteúdo gerado pelo usuário.


Método de autenticação básica da API REST do WordPress usando credenciais do usuário

2. Usando credenciais de cliente para interação segura com a API REST do WordPress


Se você tem um aplicativo Android ou iOS e precisa interagir com o conteúdo do WordPress por meio da API REST, é essencial proteger seu site contra acesso não autorizado. Em vez de usar as credenciais de usuário do WordPress diretamente, o que pode ser arriscado, você deve optar pela Autenticação Básica do WordPress com credenciais de cliente.

Veja como usar as credenciais do cliente com segurança:

  • Obter ID do cliente e segredo do cliente: Em vez de expor as credenciais do usuário do WordPress, gere um ID de cliente e um segredo de cliente para seu aplicativo.
  • Enviar solicitações seguras: Ao fazer solicitações de API, inclua o ID do cliente e o segredo do cliente. Essas credenciais são transmitidas em formato criptografado dentro do cabeçalho de Autorização Básica.
  • Validação e Acesso: Assim que a API REST do WordPress receber sua solicitação, ela validará as credenciais do cliente. Se a validação for bem-sucedida, você terá acesso aos endpoints da API necessários, mantendo seu site seguro.

Ao usar credenciais do cliente, você garante que suas informações de usuário do WordPress permaneçam protegidas e ainda permite que seu aplicativo interaja com seu site WordPress de forma eficiente.


Método de autenticação básica da API REST do WordPress usando credenciais do cliente

Usando autenticação básica com a API REST: nome de usuário e senha


  • No plugin, vá para o Configurar métodos aba na seção esquerda.
  • Clique em Autenticação básica como o método de autenticação da API.
  • Método básico de autenticação da API REST do WordPress usando nome de usuário e senha
  • Selecionar Nome de usuário e senha com codificação Base64 e clique Next no canto superior direito.
  • Método básico de autenticação da API REST do WordPress usando nome de usuário e senha
  • Para testar a funcionalidade, preencha os campos Nome de usuário e Senha de um usuário existente.
  • Método básico de autenticação da API REST do WordPress usando nome de usuário e senha
  • Você pode editar o endpoint da API REST para buscar detalhes dele. Exemplo: o endpoint /pages foi selecionado aqui:
  • Clique no Configuração de Teste botão e verifique o resultado mostrado na tela.
  • Clique na Acabamento botão.
  • Método básico de autenticação da API REST do WordPress usando nome de usuário e senha

Autenticação básica da API REST usando ID do cliente e segredo do cliente:


  • No plugin, vá para Configurar autenticação de API guia e clique em Autenticação Básica como o método de autenticação da API.
  • Agora, selecione o ID do cliente: Segredo do cliente como o Tipo de Chave de Autenticação Básica e escolha qualquer um dos métodos de criptografia disponíveis, dependendo de como você deseja codificar as credenciais do usuário. HMAC é o mais seguro entre eles e o recomendado.
  • Finalmente, clique em Salvar configuração então a Autenticação Básica para Autenticação REST API do WordPress será habilitada.
  • Método básico de autenticação da API REST do WordPress usando client-id e client-secret
  • Após salvar a Configuração Básica de Autenticação da API REST, para acessar as APIs REST do WordPress, você precisa enviar uma solicitação de API REST com sua respectiva Chave de Autorização. Você precisa usar o formato de solicitação mostrado abaixo.
  •   Request:  GET https://<domain-name>/wp-json/wp/v2/posts
      Header: Authorization: Basic base64encoded <client-id:client-secret>
    Sample Request Format- Example => Client ID : pSYQsKqTndNVpNKcnoZd and Client Secret : SrYPTViHdCbvkWyTfWrSltavTMeJjaOHCye
    
      Sample curl Request Format-
      curl -H "Authorization:Basic base64encoded <clientid:clientsecret>"
      -X POST http://<wp_base_url>/wp-json/wp/v2/users
      -d"username=test&email=test@test.com&password=test&name=test" 
      
  • A função PHP base64_encode(string) para codificação base64 pode ser usada da seguinte maneira:
  •         
       base64_encode(‘pSYQsKqTndNVpNKcnoZd:SrYPTViHdCbvkWyTfWrSltavTMeJjaOHCye’) will results into 
      ‘cFNZUXNLcV RuZE5WcE5LY25vWmQ6U3JZUFRWaUhkQ2J2a1d5VGZXclNsdGF2VE1lSmphT0hDeWU=’ as output.
    Sample request: GET https://<domain-name>/wp-json/wp/v2/posts  Header: Authorization :Basic eGw2UllOdFN6WmxKOlNMRWcwS1ZYdFVrbm5XbVV2cG9RVFNLZw==
  • Confira o Resposta de erro para autenticação básica usando ID do cliente e segredo do cliente.
  • Confira o documentação do desenvolvedor para mais detalhes.


 
  var client = new RestClient("http://<wp_base_url>/wp-json/wp/v2/posts ");
  client.Timeout = -1;
  var request = new RestRequest(Method.POST);
  request.AlwaysMultipartFormData = true;
  request.AddParameter("title", "Sample Post");
  request.AddParameter("status", "publish");
  IRestResponse response = client.Execute(request);
  Console.WriteLine(response.Content);
  
 
  OkHttpClient client  = new OkHttpClient().newBuilder().build();
  MediaType mediaType = MediaType.parse("text/plain");
  RequestBody body  = new MultipartBody.Builder().setType(MultipartBody.FORM)
  .addFormDataPart("title","Sample Post")
  .addFormDataPart("status", "publish") 
  .build();
  Request request  = new Request.Builder()
  .url("http://<wp_base_url>/wp-json/wp/v2/posts ")
  .method("POST", body)
   .build();
  Response responseclient.newCall(request).execute();
  
 
  var form = new FormData();
  form.append("title","Sample Post");
  form.append("status", "publish"); 
  
  var settings  = {
  "url": "http://<wp_base_url>/wp-json/wp/v2/posts ",
  "method": "POST",
  "timeout": 0,
  "processData": false,
  "mimeType": "multipart/form-data",
  "contentType": false,
  "data": form
  };
  
  $.ajax(settings).done(function (response)  {
  console.log(response);
  });
  
 
  <?php
   $curl = curl_init();
  curl_setopt_array($curl, array 
  (
  CURLOPT_URL => 'http://%3Cwp_base_url%3E/wp-json/wp/v2/posts%20',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => array('title' => 'Sample Post','status' => 'publish'),
  ));
  
  $response = curl_exec($curl);
  curl_close($curl);    
  echo $response;
  
 
  import http.client
  import mimetypes
  from codecs import encode
  
  conn   = http.client.HTTPSConnection("<wp_base_url>")
  dataList= []
  boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
  dataList.append(encode('--' + boundary))
  dataList.append(encode('Content-Disposition: form-data; name=title;')) 
  
  dataList.append(encode('Content-Type: {}'.format('text/plain')))    
  dataList.append(encode(''))    
  
  dataList.append(encode("Sample Post"))
  dataList.append(encode('--' + boundary))    
  dataList.append(encode('Content-Disposition: form-data; name=status;'))    
  
  dataList.append('Content-Type: {}'.format('text/plain')))
  dataList.append(encode(''))    
  
  dataList.append(encode("publish")) 
  dataList.append(encode('--'+boundary+'--'))    
  dataList.append(encode(''))    
  body  = b'\r\n'.join(dataList)    
  payload= body
  headers = {
  'Content-type': 'multipart/form-data; boundary={}'.format(boundary) 
  }
  conn.request("POST", "/wp-json/wp/v2/posts ", payload, headers)
  res= conn.getresponse()    
  data = res.read()    
  print (data.decode("utf-8"))   
  
 
  var client = new RestClient("http://<wp_base_url>/wp-json/wp/v2/posts ");
  client.Timeout = -1;
  var request = new RestRequest(Method.POST);
  request.AddHeader("Authorization", "Basic base64encoded < clientid:clientsecret > ");
  request.AlwaysMultipartFormData = true;
  request.AddParameter("username", "test");
  request.AddParameter("email", "test@test.com");
  request.AddParameter("password", "test");
  request.AddParameter("name", "test");
  IRestResponse response = client.Execute(request);
  Console.WriteLine(response.Content);
  
 
  OkHttpClient client  = new OkHttpClient().newBuilder().build();
  MediaType mediaType = MediaType.parse("text/plain");
  RequestBody body  = new MultipartBody.Builder().setType(MultipartBody.FORM)
  .addFormDataPart("username","test")
  .addFormDataPart("email","test@test.com")
  .addFormDataPart("password","test")
  .addFormDataPart("name","test") 
  .build();
  Request request  = new Request.Builder()
  .url("http://<wp_base_url>/wp-json/wp/v2/posts ")
  .method("POST", body)
  .addHeader ("Authorization", "Basic base64encoded < clientid:clientsecret > ")
   .build();
  Response responseclient.newCall(request).execute();
  
 
  var form = new FormData();
  form.append("username", "test");
  form.append("email", "test@test.com");
  form.append("password", "test");
  form.append("name", "test");
  
  var settings  = {
  "url": "http://<wp_base_url>/wp-json/wp/v2/posts ",
  "method": "POST",
  "timeout": 0,
  "headers": {
  "Authorization": "Basic base64encoded < clientid:clientsecret > "
  },
  "processData": false,
  "mimeType": "multipart/form-data",
  "contentType": false,
  "data": form
  };
  
  $.ajax(settings).done(function (response)  {
  console.log(response);
  });
  
 
  <?php
   $curl = curl_init();
  curl_setopt_array($curl, array 
  ( 
  CURLOPT_URL => 'http://%3Cwp_base_url%3E/wp-json/wp/v2/users',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => array('username' => 'test','email' => 'test@test.com','password' => 'test','name' => 'test'),
  CURLOPT_HTTPHEADER => array(
  'Authorization: Basic base64encoded < clientid:clientsecret > '
  ),
  ))  
  $response = curl_exec($curl);
  curl_close($curl);    
  echo $response;
  
 
  import http.client
  import mimetypes
  from codecs import encode
  
  conn   = http.client.HTTPSConnection("<wp_base_url>")
  dataList= []
  boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
  dataList.append(encode('--' + boundary))
  dataList.append(encode('Content-Disposition: form-data; name=username;'))
  
  dataList.append(encode('Content-Type: {}'.format('text/plain')))    
  dataList.append(encode(''))    
  
  dataList.append(encode("test"))
  dataList.append(encode('--' + boundary))    
  dataList.append(encode('Content-Disposition: form-data; name=email;'))
  
  dataList.append('Content-Type: {}'.format('text/plain')))
  dataList.append(encode(''))    
  
  dataList.append(encode("test@test.com"))
  dataList.append(encode('--'+ boundary))    
  dataList.append(encode('Content-Disposition: form-data; name=password;'))
  
  dataList.append(encode('Content-Type: {}'.format('text/plain')))
  dataList.append(encode(''))
  
  dataList.append(encode("test"))
  dataList.append(encode('--' + boundary))
  
  dataList.append(encode('Content-Disposition: form-data; name=name;'))
  
  dataList.append(encode('Content-Type: {}'.format('text/plain')))
  dataList.append(encode(''))
  
  dataList.append(encode("test"))
  dataList.append(encode('--'+boundary+'--'))
  dataList.append(encode(''))
  body  = b'\r\n'.join(dataList)    
  payload= body
  headers = {
  'Authorization': 'Basic base64encoded < clientid:clientsecret > ',
  'Content-type': 'multipart/form-data; boundary={}'.format(boundary) 
  }
  conn.request("POST", "/wp-json/wp/v2/posts ", payload, headers)
  res= conn.getresponse()    
  data = res.read()    
  print (data.decode("utf-8"))   
  


    Siga os passos abaixo para fazer uma solicitação de API REST usando o Postman:

  • Clique no Amostras de Carteiro guia no plugin.
  • Implementação do método de autenticação básica da API REST do WordPress postman
  • Agora, passe o mouse sobre o cartão Exemplos de autenticação básica do Postman.
      • Método de autenticação básica da API REST do WordPress, arquivo JSON do carteiro para nome de usuário: senha
      • Importar o baixado Arquivo JSON no aplicativo Postman, conforme mostrado abaixo.
      • Método de autenticação básica da API REST do WordPress para importar arquivo JSON do postman
      • Após importar o arquivo JSON, clique na solicitação da API REST em Coleções, conforme mostrado na última figura. Substitua o com seu domínio Wordpress no http://<wp_base_url>/wp-json/wp/v2/posts e substituir o codificado em base64 no cabeçalho com o valor base codificado.
        • Exemplo:
          Para nome de usuário: testuser e senha: password@123 o valor codificado em base64 será 'dGVzdHVzZXI6cGFzc3dvcmRAMTIz'

      Método de chave de autenticação da API REST do WordPress postman substitui url base
      • Método de autenticação básica da API REST do WordPress, arquivo JSON do carteiro para ID do cliente e segredo do cliente
      • Importar o baixado Arquivo JSON no aplicativo Postman, conforme mostrado abaixo.
      • Método de autenticação básica da API REST do WordPress para importar arquivo JSON do postman
      • Após importar o arquivo JSON, clique na solicitação da API REST em Coleções, conforme mostrado na última figura. Agora substitua o com seu domínio Wordpress no http://<wp_base_url>/wp-json/wp/v2/posts e substituir o codificado em base64 no cabeçalho com o valor base codificado.
      • Método de autenticação básica da API REST do WordPress, postman substitui URL base


1. Restrição da API REST baseada em função:


Este recurso restringe o acesso à API REST do WordPress com base nas funções do usuário. Você pode incluir funções específicas na lista de permissões que têm permissão para acessar determinados recursos da API REST. Quando uma solicitação à API REST é feita, a função do usuário é verificada e o acesso é concedido somente se a função estiver na lista de permissões.


Como configurar a restrição da API REST baseada em funções no WordPress?

  • Vá para o plugin Configurações avançadas aba.
  • De acordo com o relatório Restrição Baseada em Função seção, todas as funções têm permissão para acessar APIs por padrão.
  • Marque a caixa de seleção ao lado das funções que você deseja restringir de acessar as APIs.
  • Implementação do método de autenticação básica da API REST do WordPress postman
  • Na imagem acima, a caixa de seleção da função de assinante está habilitada. Portanto, sempre que uma solicitação de API for feita pelo usuário, com sua função de assinante, esse usuário não terá permissão para acessar o recurso solicitado.

Nota: O recurso de restrição baseado em função é válido para autenticação básica (nome de usuário: senha), método JWT e OAuth 2.0 (concessão de senha).


2. Cabeçalho personalizado:


O recurso Cabeçalho Personalizado permite que você use um cabeçalho personalizado em vez do cabeçalho padrão "Autorização". Isso adiciona uma camada extra de segurança, pois a API REST aceitará apenas solicitações com o nome de cabeçalho personalizado definido por você. Se alguém tentar enviar uma solicitação usando o cabeçalho padrão "Autorização", o acesso será negado.


Como configurar um cabeçalho personalizado para autenticação da API REST do WordPress?

  • Vá para o plugin Configurações avançadas aba.
  • De acordo com o relatório Cabeçalho personalizado seção, insira o nome do cabeçalho de sua preferência na caixa de texto.
  • Salve as alterações para aplicar o novo cabeçalho personalizado para solicitações de API.
  • Implementação do método de autenticação básica da API REST do WordPress postman

3. Excluir APIs REST:


O recurso Excluir APIs REST permite que endpoints específicos da API REST sejam acessados ​​sem autenticação. Essas APIs excluídas tornam-se publicamente disponíveis, tornando-as acessíveis sem a necessidade de token ou login.


Como configurar a API REST excluída na autenticação JWT?

  • Vá para o plugin Configurações avançadas aba.
  • De acordo com o relatório Excluir APIs REST seção, insira seus endpoints de API no formato necessário.
  • As APIs inseridas serão excluídas da autenticação e ficarão disponíveis para acesso público.
  • Implementação do método de autenticação básica da API REST do WordPress postman
  • Exemplo: Suponha que você queira excluir a API REST '/wp-json/wp/v2/posts' então você tem que digitar '/wp/v2/posts' na caixa de texto.

4. Habilite a Criptografia Avançada para os tokens usando HMAC:


Este recurso está disponível no método de Autenticação Básica. Por padrão, os tokens são criptografados usando a codificação Base64, mas com a opção avançada, você pode habilitar a criptografia HMAC para tokens. O HMAC oferece um nível de segurança muito mais alto, garantindo que as solicitações de API sejam fortemente protegidas contra adulteração e acesso não autorizado.


Como configurar a criptografia HMAC para tokens na autenticação básica do WordPress?

  • Vá para o plugin Configurações avançadas guia e abra o Método de criptografia de token seção.
  • Selecionar HMAC em vez de Base64, salve as alterações para aplicar criptografia segura para todos os tokens.


Por padrão, a Autenticação Básica usa codificação Base64, que não é totalmente segura. No entanto, com plugins como o nosso, você pode habilitar a criptografia HMAC avançada, tornando os tokens mais seguros e adequados para uso em produção.

A Autenticação Básica é ideal para testes, desenvolvimento ou aplicativos de pequena escala onde a simplicidade é importante. O JWT é recomendado para aplicativos maiores que precisam de sessões baseadas em tokens e escalabilidade.

Sim. A Autenticação Básica pode ser usada com credenciais de usuário ou credenciais de cliente em aplicativos móveis para validar solicitações de API com segurança.

Se desabilitada, os endpoints da sua API REST não validarão mais solicitações com a Autenticação Básica. Isso pode deixar sua API vulnerável a acessos não autorizados, por isso é recomendável manter a autenticação sempre ativada.

Com o recurso Restrição Baseada em Função, você pode especificar quais funções do WordPress têm permissão ou não acesso aos seus pontos de extremidade da API REST.




Obtenha uma avaliação completa



 Obrigado pela sua resposta. Entraremos em contato em breve.

Algo deu errado. Envie sua consulta novamente.

Integrar endpoints de API REST externos/de terceiros

Precisa de ajuda?

Envie-nos um e-mail apisupport@xecurify.com para orientação rápida (por e-mail/reunião) sobre sua necessidade e nossa equipe ajudará você a selecionar a melhor solução/plano adequado de acordo com sua necessidade.


ADFS_sso ×
Olá!

Preciso de ajuda? Estamos bem aqui!

ajuda