Procurar Resultados :

×

Registrar Contato

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

A autenticação básica para APIs REST do WordPress protege o acesso aos endpoints do WordPress validando as requisições à API com um token gerado a partir de um nome de usuário e senha ou credenciais do cliente. Esse 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 do WordPress ajuda a proteger APIs REST usando autenticação básica. Com esse método, cada requisição à API envia credenciais (nome de usuário ou e-mail e senha) codificadas em base64, garantindo a comunicação segura entre seu site WordPress e aplicativos externos.


Plugin de autenticação de API REST para WordPress

O plugin REST API Authentication para WordPress oferece segurança contra acessos não autorizados à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 a autenticação básica da API do WordPress, você precisa instalar um plugin de autenticação de API REST para WordPress . Esse 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 "REST API Authentication for WP" no repositório de plugins do WordPress e instale-o. Este plugin habilitará a autenticação básica da API REST em 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 REST API Authentication.
  • 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. Utilizando nome de usuário e senha para interação segura com a API REST do WordPress


Se você estiver desenvolvendo um aplicativo para Android ou iOS que permita aos usuários publicar 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 para WordPress: Implemente as APIs REST de autenticação básica para WordPress com os nomes de usuário e senhas dos usuários. Esse método garante que as solicitações feitas por meio 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 formato criptografado no 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 executar e o conteúdo ao qual pode acessar. Isso ajuda a controlar as capacidades do usuário e a manter interações seguras com o seu site WordPress.

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


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

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


Se você possui um aplicativo para Android ou iOS e precisa interagir com o conteúdo do WordPress por meio de sua API REST, é essencial proteger seu site contra acessos não autorizados. 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 para 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 de 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 à API, inclua o ID do cliente e o segredo do cliente. Essas credenciais são transmitidas em formato criptografado no cabeçalho de Autorização Básica.
  • Validação e Acesso: Assim que a API REST do WordPress recebe sua solicitação, ela valida as credenciais do cliente. Se a validação for bem-sucedida, você obtém acesso aos endpoints da API necessários, mantendo a segurança do seu site.

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


Método de autenticação básica da API REST para 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 de autenticação básica da API REST para WordPress usando nome de usuário e senha.
  • Selecionar Nome de usuário e senha com codificação Base64 e clique Seguinte no canto superior direito.
  • Método de autenticação básica da API REST para WordPress usando nome de usuário e senha.
  • Para testar a funcionalidade, preencha os campos de nome de usuário e senha para um usuário existente.
  • Método de autenticação básica da API REST para WordPress usando nome de usuário e senha.
  • Você pode editar o endpoint da API REST para obter detalhes desse endpoint. 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 de autenticação básica da API REST para 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 Selecione o tipo de chave de autenticação básica e escolha um dos métodos de criptografia disponíveis, dependendo de como deseja codificar as credenciais do usuário. O HMAC é o mais seguro e o recomendado.
  • Finalmente, clique em Salvar configuração Assim, as APIs REST de autenticação básica para WordPress serão ativadas.
  • Método de autenticação básica da API REST para WordPress usando client-id e client-secret
  • Após salvar a configuração de autenticação básica da API REST, para acessar as APIs REST do WordPress, você precisa enviar uma solicitação à API REST com sua respectiva chave de autorização. Você deve 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 para WordPress no 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 para WordPress no Postman, usando um arquivo JSON com os campos nome de usuário e senha.
      • Importar o baixado Arquivo JSON no aplicativo Postman, conforme mostrado abaixo.
      • Método de autenticação básica da API REST para importação de arquivo JSON no Postman do WordPress
      • 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 o nome de usuário: testuser e senha: password@123, o valor codificado em base64 será 'dGVzdHVzZXI6cGFzc3dvcmRAMTIz'

      Método de chave de autenticação de APIs REST no Postman: substituir URL base
      • Método de autenticação básica da API REST para WordPress, arquivo JSON do Postman 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 para importação de arquivo JSON no Postman do WordPress
      • 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 para WordPress no Postman: substituir 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 adicionar funções específicas à lista de permissões 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 para WordPress no 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 a função de assinante, esse usuário não terá permissão para acessar o recurso solicitado.

Observação: o recurso de restrição baseada 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 de Cabeçalho Personalizado permite que você use um cabeçalho personalizado em vez do cabeçalho padrão 'Authorization'. 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 'Authorization', o acesso será negado.


Como configurar um cabeçalho personalizado para autenticação da API REST no 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 para WordPress no Postman

3. Excluir APIs REST:


O recurso Excluir APIs REST permite que você autorize o acesso a endpoints específicos de APIs REST sem autenticação. Essas APIs excluídas tornam-se publicamente disponíveis, podendo ser acessadas 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 para WordPress no Postman
  • Exemplo: Suponha que você queira excluir a API REST 'Se você tiver '/wp-json/wp/v2/posts', então você precisa inserir '/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 os tokens. O HMAC oferece um nível de segurança muito maior, 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 no WordPress para autenticação básica?

  • 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 a 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 necessitam 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 desativada, a autenticação básica deixará de validar as solicitações nos endpoints da sua API REST. Isso pode expor sua API a acessos não autorizados, portanto, recomenda-se manter a autenticação sempre ativada.

Com o recurso de Restrição Baseada em Funções, você pode especificar quais funções do WordPress têm permissão ou negação de acesso aos seus endpoints 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 um e-mail para apisupport@xecurify.com para obter orientações rápidas (por e-mail ou reunião) sobre sua necessidade e nossa equipe o ajudará a selecionar a solução/plano mais adequado às suas necessidades.


ADFS_sso ×
Olá!

Preciso de ajuda? Estamos bem aqui!

ajuda