Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Atual »

Este 'How To' tem como objetivo apresentar e explicar a validação de clientes RPC como ferramenta para reforçar a segurança na execução de chamadas via RPC.

Validação de Clientes RPC

A validação de clientes RPC é uma medida opcional de segurança implementada para permitir que o servidor de uma chamada RPC verifique se o solicitante pode ou não executar chamadas RPC.

Através da execução de uma função AdvPL, definida pelo usuário e indicada no arquivo de configurações do servidor RPC, é possível criar uma política de permissões de execução de funções via RPC de maneira flexível.

A medida de segurança é opcional pois depende da configuração ou não da função de validação. No entanto, uma vez configurada, a validação será executada de maneira obrigatória e a cada chamada de método RPC por parte do cliente, até que o servidor seja reiniciado com validação desabilitada.

Configuração da Função de Validação

A função de validação de clientes RPC é indicada no arquivo de configuração do servidor RPC na seção RPC, chave OnCall.
Caso configurada, habilita a validação de clientes RPC; caso não configurada, o cliente RPC é considerado válido por padrão.

Localização da Função de Validação

A função definida pelo usuário deverá estar no mesmo ambiente (environment) a ser utilizado para execução das tarefas (funções) RPC no servidor, conforme instância da classe TRpc em uso.

Assinatura da Função de Validação

A função de validação de clientes RPC deverá receber 3 (três) strings de caracteres, definindo o IP do cliente RPC, o nome da máquina do cliente RPC e o ambiente (environment) no servidor RPC onde a função está localizada.

User Function SomeFunc( _cClientIP, _cClientHostName, _cServerEnv )

Local lResult := .F.

Return lResult

 

Sintaxe

<SomeFunc>( < _cClientIP >, < _cClientHostName >, < _cServerEnv > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

_cClientIP

caractere

IP do cliente RPC.

X

 

_cClientHostName

caractere

Nome da máquina (host name) do cliente RPC.

X

 

_cServerEnv

caractere

Ambiente (environment) no servidor RPC onde a função está localizada.

X

 

Retorno

Nome

Tipo

Descrição

cRet

caractere

Retorna uma cadeia de caracteres criptografada.

Observações

Exemplos

User Function rc4crypt_exemplo()
  local cRet
  local cOriginal
  // resultado ASCII em hex: "55AB394524"
  cRet = rc4crypt( "abcde" ,"123456789", .T.)
  conout("Criptografado em ascii = " + cRet)
  cRet = rc4crypt( "abcde" ,"123456789", .F.)
  conout("Criptografado em string = " + cRet)
  // processo inverso
  cOriginal = rc4crypt(cRet, "123456789", .F.)
  conout("String original = " + cOriginal)
  // converte de ASCII em hex para string
  cRet = chr(CTON('55', 16))
  cRet += chr(CTON('AB', 16))
  cRet += chr(CTON('39', 16))
  cRet += chr(CTON('45', 16))
  cRet += chr(CTON('24', 16))
  conout ("resultado em hex convertido = " +cRet)
  cOriginal = rc4crypt(cRet, "123456789", .F.)
  conout("String original = " + cOriginal)
Return

User Function input_ascii_test()
  local cRet
  local cOriginal
  // resultado ASCII em hex: "55AB394524"
  cRet = rc4crypt( "abcde" ,"123456789", .T.)
  conout("Criptografado em ascii = " + cRet)
  cOriginal = rc4crypt(cRet, "123456789", .F., .T.)
  conout("String original = " + cOriginal)
Return

Resultado da Função de Validação

Caso bem sucedida, a função de validação retorna o valor lógico resultante da validação do cliente RPC, definido pelo usuário no corpo da função de validação.

Caso mal sucedida, a função de validação retorna falso (.F.), o cliente RPC é considerado como não-válido e a mensagem de erro "Invalid RPC Client..." é retornada ao cliente e logada.

Período de Latência de uma Validação

A validação do cliente RPC é executada a cada chamada de método RPC por parte do cliente, até que o servidor seja reiniciado com validação desabilitada.

No entanto, a execução ou não da função de validação de clientes RPC, quando de uma validação, depende do resultado prévio da função de validação e de quando a validação ocorre em relação ao seu período de latência.

Caso bem sucedida, a função de validação somente será executada novamente após o período de 300 segundos (5 minutos), independente do resultado da validação do cliente RPC.

Durante este período, o resultado da validação do cliente RPC retornado será o mesmo.

Após o período de latência, o resultado da validação expira, e a próxima chamada de método RPC por parte do cliente executará a função de validação novamente e o processo se repete.

Caso mal sucedida, a função de validação será executada novamente quando da chamada de método RPC por parte do cliente.

Resultado da Validação

O resultado da validação de um cliente RPC é um valor lógico que depende do resultado bem sucedido da função de validação de clientes RPC.

Caso válido, o cliente RPC estará habilidato a executar chamadas RPC durante o período de latência de sua validação.

Caso não-valido, o cliente RPC não estará habilitado a executar chamadas RPC e a função de validação RPC será executada novamente na próxima requisição RPC do cliente.

  • Sem rótulos