🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️ Olá pessoal, Espero que este post encontre todos vocês bem! É com grande entusiasmo que compartilho que estou expandindo meus serviços como Desenvolvedor AdvPL para novos desafios e colaborações. Com mais de duas décadas de experiência sólida, minha jornada profissional tem sido enriquecedora, com a oportunidade de participar de projetos empolgantes ao longo dos anos. Agora, estou ansioso para trazer minha experiência e habilidades para novas equipes e projetos, trabalhando de forma remota. Minha expertise abrange não apenas AdvPL, mas também outras tecnologias-chave, incluindo JS, SQL, Infraestrutura e Otimização de Processos. Acredito que essa combinação de conhecimentos me permite oferecer soluções abrangentes e eficazes para uma variedade de necessidades de desenvolvimento. Acredito que a tecnologia tem o poder de transformar negócios e impulsionar o sucesso, e estou comprometido em ajudar meus clientes a alcançar seu
Carlinha Soneta está fazendo com que eu seja produtivo na postagem de dicas para vocês. Dessa vez ela solicitou que, para a autenticação do usuário do WS, além de informar Usuário e Senha, fosse informado o "Hash" de uma mensagem. Essa solicitação baseou-se na necessidade de um cliente com .net e em função do seguinte artigo: "WebService utilizando soapHeader e token". Pensei um pouco e bolei o seguinte esquema para autenticação:
1 ) Criar um método para obtenção de Mensagens: O usuário do WS iria chamar esse método e obter uma mensagem aleatória. Retornaria o "Hash" dessa mensagem calculado via MD5;
2 ) Criar um método para validação do Usuário considerando, além do Usuário e Senha, o "Hash" da mensagem.
Eu poderia ter criado uma tabela de mensagens a serem geradas, mas optei em trabalhar com a tabela SX5 (Tabelas Genéricas) com a opção de retornar as mensagens em Português, Inglês ou Espanhol de forma aleatória e/ou embaralhada. Na realidade, o esperado do WS de mensagem é uma mensagem qualquer, que deverá ser codificada e retornada para autenticação do usuário do WS.
1 ) Criar um método para obtenção de Mensagens: O usuário do WS iria chamar esse método e obter uma mensagem aleatória. Retornaria o "Hash" dessa mensagem calculado via MD5;
2 ) Criar um método para validação do Usuário considerando, além do Usuário e Senha, o "Hash" da mensagem.
Eu poderia ter criado uma tabela de mensagens a serem geradas, mas optei em trabalhar com a tabela SX5 (Tabelas Genéricas) com a opção de retornar as mensagens em Português, Inglês ou Espanhol de forma aleatória e/ou embaralhada. Na realidade, o esperado do WS de mensagem é uma mensagem qualquer, que deverá ser codificada e retornada para autenticação do usuário do WS.
Sendo assim, criei os seguintes WS:
/*/
WSSERVICE: u_wsGetMessages
Autor: Marinaldo de Jesus & Carla (amor) Soneta
Data: 29/07/2010
Descrição: Serviço Mensagens Para Token de Autenticação de Usuário
Uso: WS
/*/
Esse WS será usado para a obtenção de Mensagens que serão utilizadas, em conjunto com Usuário e Senha, para a autenticação do usuário. Esse WS possui os seguintes métodos:
GetMessage: usado para a obtenção de Mensagem Aleatória ; e
ClearStackMD5Hash: usado para limpar a Pilha de Mensagens.
GetMessage receberá, como parâmetros: Language e Embaralha. Language será utilizado para identficar em que idioma a mensagem será enviada: PT (Português), ENG (Inglês), SPA (Spanish) ou Brancos (para não considerar a Descrição do SX5, retornando uma mensagem composta por constantes, e informações variáveis do sistema como Date() e Time()). Já Embaralha, do tipo lógico (boolean) quando "setado", fará com que as mensagens sejam "embaralhadas" antes de serem enviadas. Ele retornará conforme parâmetros de entrada, a mensagem ao "client" solicitante. O "Hash" dessa mensagem deverá ser retornado quando da validação do usuário do WS.
ClearStackMD5Hash receberá, como parâmetros de entrada: ClearAllMD5Hash, MD5HashClear e de saída Message. Se ClearAllMD5Hash for "setado" como "true" a pilha de mensagens armazenadas em GetMessage será esvaziada, caso contrário, apenas o "hash" passado em MD5HashClear será eliminado da pilha de mensagens. Message retornará uma mensagem informativa de acordo com o conteúdo de ClearAllMD5Hash.
ClearStackMD5Hash receberá, como parâmetros de entrada: ClearAllMD5Hash, MD5HashClear e de saída Message. Se ClearAllMD5Hash for "setado" como "true" a pilha de mensagens armazenadas em GetMessage será esvaziada, caso contrário, apenas o "hash" passado em MD5HashClear será eliminado da pilha de mensagens. Message retornará uma mensagem informativa de acordo com o conteúdo de ClearAllMD5Hash.
/*/
WebService: u_wsUserValid
Autor: Marinaldo de Jesus & CarlaSoneta
Data: 29/07/2010
Descrição: Web Service para Validação de Usuário do WS usando MD5
Uso: WebServices
/*/
Esse WS será utilizado para validar o Usuário e Senha e o "Hash" conforme mensagem obtida através do método GetMessage. Ele possui o seguinte método ValidUserWs.
O método ValidUserWs, receberá, como parâmetros de entrada: UserWs, UserWsPasswd, Token e HASHMD5UserAndPsw
UserWs : Nome e/ou Código do Usuário do WS
UserWsPasswd: Senha do Usuário do WS
Token: "MD5 Hash" da mensagem obtida através do WS u_wsGetMessages
HASHMD5UserAndPsw: Se, ao invés de Considerar o Usuário e Senha informados nos parâmetros, deverá considerar o "MD5 Hash" do valor digitado.
Esse método irá retornar lValidUserWs, com o valor "true", se o usuário for validado, ou "false" caso contrário. Um "Soap Fault" poderá ser gerado de acordo com o parâmetro invalidado.
Além do métodos acima, o programa que contém o WS de Validação de Usuário e obtenção das Mensagens, possui também a função Random( nRange , nMin , nMax ). Random retornará um numero aleatório para um determinado intervalo.
Considerando que o programa possui 2 WS, para cada um deverá ser gerado um "Client".
Além dos WS acima citados, foi criado o WS u_wsTstUserValid. Esse WS será utilizado para demonstrar o uso dos demais.
/*/
WebService: u_wsTstUserValid
Autor: Marinaldo de Jesus & CarlaSoneta
Data: 29/07/2010
Descrição: Web Service para Teste Validação de Usuário do WS usando MD5
Uso: WebServices
/*/
O WS u_wsTstUserValid possui os seguintes métodos:
SampleVld01: "Exemplo 01 - Usando Language igual a PT, Usuário e Senhas originais e Não Embaralha"
SampleVld02: "Exemplo 02 - Usando Language igual a ENG, Usuário e Senhas originais e Não Embaralha"
SampleVld03: "Exemplo 03 - Usando Language igual a SPA, Usuário e Senhas originais e Não Embaralha"
SampleVld04: "Exemplo 04 - Usando Language em Branco, Usuário e Senhas originais e Não Embaralha"
SampleVld05: "Exemplo 05 - Usando Language igual a PT, Usuário e Senhas originais e Embaralha"
SampleVld06: "Exemplo 06 - Usando Language igual a ENG, Usuário e Senhas originais e Embaralha"
SampleVld07: "Exemplo 07 - Usando Language igual a SPA, Usuário e Senhas originais e Embaralha"
SampleVld08: "Exemplo 08 - Usando Language em Branco, Usuário e Senhas originais e Embaralha"
SampleVld09: "Exemplo 09 - Usando Language igual a PT, Hash de Usuário e Senha e Não Embaralha"
SampleVld10: "Exemplo 10 - Usando Language igual a ENG, Hash de Usuário e Senha e Não Embaralha"
SampleVld11: "Exemplo 11 - Usando Language igual a SPA,, Hash de Usuário e Senha e Não Embaralha"
SampleVld12: "Exemplo 12 - Usando Language em Branco, Hash de Usuário e Senha e Não Embaralha"
SampleVld13: "Exemplo 13 - Usando Language igual a PT, Hash de Usuário e Senha e Embaralha"
SampleVld14: "Exemplo 14 - Usando Language igual a ENG, Hash de Usuário e Senha e Embaralha"
SampleVld15: "Exemplo 15 - Usando Language igual a SPA,, Hash de Usuário e Senha e Embaralha"
SampleVld16: "Exemplo 16 - Usando Language em Branco, Hash de Usuário e Senha e Embaralha"
E todos eles receberão, como parâmetro de entrada: Usr e Pwd, retornando: lUserOk. Cada um explorará as características de validação de maneira diferente (no exemplo, 16). Considerando que no WS de validação defini as seguintes constantes como Usuário e Senha:WebService: u_wsUserValid
Autor: Marinaldo de Jesus & Carla
Data: 29/07/2010
Descrição: Web Service para Validação de Usuário do WS usando MD5
Uso: WebServices
/*/
Esse WS será utilizado para validar o Usuário e Senha e o "Hash" conforme mensagem obtida através do método GetMessage. Ele possui o seguinte método ValidUserWs.
O método ValidUserWs, receberá, como parâmetros de entrada: UserWs, UserWsPasswd, Token e HASHMD5UserAndPsw
UserWs : Nome e/ou Código do Usuário do WS
UserWsPasswd: Senha do Usuário do WS
Token: "MD5 Hash" da mensagem obtida através do WS u_wsGetMessages
HASHMD5UserAndPsw: Se, ao invés de Considerar o Usuário e Senha informados nos parâmetros, deverá considerar o "MD5 Hash" do valor digitado.
Esse método irá retornar lValidUserWs, com o valor "true", se o usuário for validado, ou "false" caso contrário. Um "Soap Fault" poderá ser gerado de acordo com o parâmetro invalidado.
Além do métodos acima, o programa que contém o WS de Validação de Usuário e obtenção das Mensagens, possui também a função Random( nRange , nMin , nMax ). Random retornará um numero aleatório para um determinado intervalo.
Considerando que o programa possui 2 WS, para cada um deverá ser gerado um "Client".
Além dos WS acima citados, foi criado o WS u_wsTstUserValid. Esse WS será utilizado para demonstrar o uso dos demais.
/*/
WebService: u_wsTstUserValid
Autor: Marinaldo de Jesus & Carla
Data: 29/07/2010
Descrição: Web Service para Teste Validação de Usuário do WS usando MD5
Uso: WebServices
/*/
O WS u_wsTstUserValid possui os seguintes métodos:
SampleVld01: "Exemplo 01 - Usando Language igual a PT, Usuário e Senhas originais e Não Embaralha"
SampleVld02: "Exemplo 02 - Usando Language igual a ENG, Usuário e Senhas originais e Não Embaralha"
SampleVld03: "Exemplo 03 - Usando Language igual a SPA, Usuário e Senhas originais e Não Embaralha"
SampleVld04: "Exemplo 04 - Usando Language em Branco, Usuário e Senhas originais e Não Embaralha"
SampleVld05: "Exemplo 05 - Usando Language igual a PT, Usuário e Senhas originais e Embaralha"
SampleVld06: "Exemplo 06 - Usando Language igual a ENG, Usuário e Senhas originais e Embaralha"
SampleVld07: "Exemplo 07 - Usando Language igual a SPA, Usuário e Senhas originais e Embaralha"
SampleVld08: "Exemplo 08 - Usando Language em Branco, Usuário e Senhas originais e Embaralha"
SampleVld09: "Exemplo 09 - Usando Language igual a PT, Hash de Usuário e Senha e Não Embaralha"
SampleVld10: "Exemplo 10 - Usando Language igual a ENG, Hash de Usuário e Senha e Não Embaralha"
SampleVld11: "Exemplo 11 - Usando Language igual a SPA,, Hash de Usuário e Senha e Não Embaralha"
SampleVld12: "Exemplo 12 - Usando Language em Branco, Hash de Usuário e Senha e Não Embaralha"
SampleVld13: "Exemplo 13 - Usando Language igual a PT, Hash de Usuário e Senha e Embaralha"
SampleVld14: "Exemplo 14 - Usando Language igual a ENG, Hash de Usuário e Senha e Embaralha"
SampleVld15: "Exemplo 15 - Usando Language igual a SPA,, Hash de Usuário e Senha e Embaralha"
SampleVld16: "Exemplo 16 - Usando Language em Branco, Hash de Usuário e Senha e Embaralha"
#DEFINE USERWS_NAME, com o seguinte valor: 'naldodj'
e ;
#DEFINE USERWS_PASSWORD, com o seguinte valor:
'@#Essa[!$]Eh[!$]A[!$]Minha[!$]Senha[!$]Para[!$]Acesso[!$]Ao[!$]Ws#@'
São essa informações que deverão ser passadas para validação. Altere-as conforme o seu gosto e necessidade.
Dessa vez não vou reproduzir o código aqui no "post". Disponibilizarei apenas o link para os arquivos ( num total de 5 ).
Esses arquivos são:
1 ) u_WsUserValid.prw: contém os WS para obtenção das mensagens e para Validação;
2 ) client_u_wsGetMessages.prw: Client do WS u_wsGetMessages;
3 ) client_u_wsUserValid.prw: Client do WS u_wsUserValid;
4 ) u_WsTstUserVld.prx: contém o WS com exemplos de uso; e
5 ) client_U_WSTSTUSERVALID.prw: Client do WS u_wsTstUserValid.
Para usá-los:
1 ) Compile o programa u_WsUserValid.prw;
2 ) Compile o programa u_WsTstUserVld.prx; e
3 ) Gere os clientes para cada serviço.
Bom divertimento. E, como sempre, clique aqui para "baixar" os fontes.
[]s
иαldσ dj
...
Comentários
Postar um comentário