Disponível a partir da build: 19.3.1 do appserver. |
Essa função tem a responsabilidade de carregar as propriedades que serão utilizadas posteriormente tanto na geração dos tokens(access/refresh), quanto na validação do acesso, sendo a sua declaração e existência da função responsável obrigatória.
As propriedades declaradas abaixo sempre devem ter os seus valores incrementados a partir da execução deste ponto de entrada.
Propriedade | Tipo | Descrição | Exemplo de utilização |
---|---|---|---|
client_id | Char | Identificação do cliente dentro da corporação | "_1xpto124324523@3" |
client_secret | Char | Chave secreta para composição do token | "asdja$d#als!54w5tf@akl" |
username | Char | Nome do usuário | "nomedousuario" |
password | Char | Senha do usuário | "teste123987155asd" |
grant_type | Char | Devido ao modelo implementado o valor deve "password" | "password" |
access_expires | Int | Tempo de validade do token de acesso em milissegundos | 3600 |
refresh_expires | Date | Data de validade do refresh token | Date() ou 'Date()+1' |
O TlppCore disponibiliza um parâmetro inicial que é passado por referência, nele se encontram os valores dos parâmetros que foram passados na URI de solicitação de token para que a função possa fazer o trabalho necessário de armazenamento e validação das informações:
Parâmetro | Tipo | Descrição | Obrigatório |
---|---|---|---|
jParams | JsonObject | Objeto do tipo Json que contem os parâmetros enviados na URI de solicitação do access token | X |
Exemplo de aplicação com apenas 1 usuário fixo e propriedades carregadas a partir das #define:
#include "tlpp-core.th" #define cliente_secret_ 'secret' #define cliente_access_expires 3600 #define cliente_refresh_expires Date()+1 #define cliente_id 'clienteId' #define cliente_oAuth2_user 'nomedoUsuario' #define cliente_oAuth2_password 'passworddoUsuario' Function u_paramsProvider(jParams) local jCliente := {; "client_id" : client_id , ; // string "client_secret" : cliente_secret,; // string "username" : cliente_oAuth2_user ,; // string "password" : cliente_oAuth2_password ,; // string "grant_type" : "password",; //string este conteúdo deve ser fixo por enquanto "access_expires" : 3600,; //integer tempo em milissegundos "refresh_expires" : Date() + 1,;// ou para o caso de data fixa, o formato de data: "mm/dd/yyyy" -> "12/31/2021" } //obtendo as propriedades da variável JSon criadas acima para poder popular o objeto nativo jParams que é passado por referencia. local aProps := jCliente:GetNames() //Adicionando as propriedades não existentes no objeto nativo jParams //Aqui deve-se ficar atento para que todas as propriedades tenham os seus valores carregados, mesmo quando não estejam presentes no objeto recebido(jParams). aEval(aProps,{|x,y| iIf(!(jParams:hasProperty(x)), jParams[x] := jCliente[x],'')}) Return .T. |
A partir da build: 20.3.1.0 do Appserver foram efetuadas algumas mudanças neste entry point conforme seguem. |
#include "tlpp-core.th" #define _rest_oAuth2_secret_ 'secret_do_cliente' #define _rest_oAuth2_access_expires 3600(ou a quantidade de tempo em segundos quem um access token deve expirar) #define _rest_oAuth2_refresh_expires 'Date()+1' #define _rest_oAuth2_client_id 'id_do_cliente' #define _rest_oAuth2_user 'nome_do_username' #define _rest_oAuth2_password 'senha_do_username' Function u_paramsProvider() local jTlppParams := JSonObject():New() local cTlppParams := '{'+; '"client_id":"'+_rest_oAuth2_client_id+'",'+; '"client_secret":"'+_rest_oAuth2_secret_+'",'+; '"username":"'+_rest_oAuth2_user+'",'+; '"password":"'+ _rest_oAuth2_password+'",'+; '"access_expires":'+cValToChar(_rest_oAuth2_access_expires)+','+; '"refresh_expires":"'+_rest_oAuth2_refresh_expires+'",'+; '"grant_type" : "password"'+; '}' jTlppParams:fromJson(cTlppParams) Return jTlppParams |
Propriedade | Tipo | Descrição | Exemplo de utilização |
---|---|---|---|
client_id | Char | Identificação do cliente dentro da corporação | "_1xpto124324523@3" |
client_secret | Char | Chave secreta para composição do token | "asdja$d#als!54w5tf@akl" |
username | Char ou Array de Objetos | Nome do usuário | "nomedousuario" ou "users": [ { "username": "nomedousuario", "password": "teste123987155asd" }, { "username": "nomedooutrousuario", "password": "teste7859557aae" }, .... |
password | Char ou Array de Objetos | Senha do usuário | "teste123987155asd" ou "users": [ { "username": "nomedousuario", "password": "teste123987155asd" }, { "username": "nomedooutrousuario", "password": "teste7859557aae" }, .... |
grant_type | Char ou Array de Objetos | Devido ao modelo implementado o valor deve "password" | "password" ou "types": [ { "grant_type": "password" }] |
access_expires | Int ou Array de Objetos | Tempo de validade do token de acesso em milissegundos | 3600 ou "expires": [ { "access_expires": 3600, "refresh_expires": "Date()+1" }] |
refresh_expires | Date ou Array de Objetos | Data de validade do refresh token | Date() ou "expires": [ { "access_expires": 3600, "refresh_expires": 12/31/2022" }] |
{ "client_id": "7LpPC0r3", "client_secret": "TlPp#S3cre7@", "expires": [ { "access_expires": 3600, "refresh_expires": "Date()+1" } ], "users": [ { "username": "7LpPC0r3o@u7h2", "password": "P@s5w0rD&7LpPC0r3" }, { "username": "tlppCore", "password": "Senha1234" }, { "username": "Pr0ba7", "password": "Senh@D3T3ste" } ], "types": [ { "grant_type": "password" } ], } |
#include "tlpp-core.th" Function U_flexibleParamsProvider() local jTlppParams := JSonObject():new() local cStringToJson := '{"client":[{"client_id": "7LpPC0r3","client_secret": "TlPp#S3cre7@"}],'+; '"expires":[{"access_expires": 3600,"refresh_expires": "Date()+1"}],'+; '"users":[{"username": "ademir_da_guia","password": "F1t3bol"},'+; '{"username": "mark","password": "Met@vers0"},'+; '{"username": "SebastiaoRodrigues","password": "grand3Tim"}],'+; '"types": [{"grant_type":"password"}],'+; '"username":"josedascouves",'+; '"password":"1234xpto"}' jTlppParams:fromJson(cStringToJson) Return jTlppParams |