Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Informações
titleDisponibilidade

A partir da build: 20.3.1.0 do Appserver , será possível trabalhar com o armazenamento de múltiplos usuários. Também foram efetuadas algumas alterações na utilização deste mudanças neste entry point conforme seguem.
Verifique mais abaixo na sessão Observações.

...


1 - Os parâmetros vindos da requisição não são enviados para este entry point e torna-se obrigatório o retorno dos parâmetros do cliente em formato JSON:

Bloco de código
languagecpp
firstline1
titleU_ParamsProvider
linenumberstrue
#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


2 - Será possível a utilização de um JSON contendo os parâmetros para criação e validação dos tokens (access / refresh)

PropriedadeTipo DescriçãoExemplo de utilização
client_idCharIdentificação do cliente dentro da corporação"_1xpto124324523@3"
client_secretCharChave secreta para composição do token"asdja$d#als!54w5tf@akl"
usernameChar ou Array de ObjetosNome do usuário

"nomedousuario" ou "users": [

{ "username": "nomedousuario", "password": "teste123987155asd" },

{ "username": "nomedooutrousuario", "password": "teste7859557aae" },

....
]

passwordChar ou Array de ObjetosSenha do usuário

"teste123987155asd" ou

"users": [

{ "username": "nomedousuario", "password": "teste123987155asd" },

{ "username": "nomedooutrousuario", "password": "teste7859557aae" },

....
]

grant_typeChar ou Array de ObjetosDevido ao modelo implementado o valor deve "password"

"password" ou

"types": [ { "grant_type": "password" }]

access_expiresInt ou Array de ObjetosTempo de validade do token de acesso em milissegundos

3600 ou

"expires": [ { "access_expires": 3600, "refresh_expires": "Date()+1" }]

refresh_expiresDate ou Array de ObjetosData de validade do refresh token

Date() ou

"expires": [ { "access_expires": 3600, "refresh_expires": 12/31/2022" }]

...

Bloco de código
languagecpp
firstline1
titleFunção de Parametrização com JsonFlexibleParamsProviders
linenumberstrue
#include "tlpp-core.th"

Function U_flexibleParamsProvider(jParams)       

  	local jClientParamsjTlppParams := JSonObject():new()
  	local cStringToJson := '{"client":[{"client_id": "7LpPC0r3","client_secret": "TlPp#S3cre7@"}],'+;
                         '"expires":[{"access_expires": 3600,"refresh_expires": "Date()+1"}],'+;
                         '"users":[{"username": "7LpPC0r3o@u7h2ademir_da_guia","password": "P@s5w0rD&7LpPC0r3F1t3bol"},'+;
                            '{"username": "tlppCoremark","password": "Senha1234Met@vers0"},'+;
                            '{"username": "Pr0ba7SebastiaoRodrigues","password": "Senh@D3T3stegrand3Tim"}],'+;
                         '"types": [{"grant_type":"password"}]},'+;
                         
  	local aProps := {}
  
  	jClientParams:fromJson(cStringToJson)
  
	aProps := jClientParams:GetNames()
 
  	aEval(aProps,{|x,y| iIf(!(jParams:hasProperty(x)), jParams[x] := jClientParams[x],'')})

Return .T  '"username":"josedascouves",'+;
                         '"password":"1234xpto"}'
  
  	jTlppParams:fromJson(cStringToJson)
 
Return jTlppParams


Observações

  • O retorno incorreto dos parâmetros vindos deste entry point invalidarão a requisição
  • O usuário , senha e o grant_type enviados na requisição e validação do access/refresh token devem estar contidos nos parâmetros declarados acima.
  • Por ser um entry point, as informações declaradas neste fonte são de total responsabilidade do desenvolvedor, o TlppCore não guarda nenhum dos dados enviados utilizando-os somente para criação e validação dos tokens, porém o formato do objeto JSON bem como os nomes de suas chaves devem ser respeitadas seguindo-se o padrão descritos nos quadros acima.