Versões comparadas
Chave
- Esta linha foi adicionada.
- Esta linha foi removida.
- A formatação mudou.
Índice:
Índice | ||
---|---|---|
|
Objetivo:
Realizar a integração de um Produto com o TReports e entender o fluxo da autenticação entre Produto X TReports X Provedor Integrado.
Definições Gerais:
Para exemplificar a integração, será utilizado o projeto TReportsServerClient (https://github.com/totvs/treports-server-client)
O TReports utiliza o Rac para gerenciamento dos usuários e permissões configurados por Tenant.
Recuperando Access Token:
Para realizar a integração do produto com o TReports, é utilizado o Fluxo Resource Owner (password). Este fluxo necessita de um usuário e senha válidos no Tenant configurado para o TReports para que a autenticação seja realizada.
Este usuário precisa conter a permissão de execução de relatório (ExecuteReport).
POST
Host: {Endereço do Rac}
Content-type: application/x-www-form-urlenconded
grant_type=password
&username=exampleuser
&password=1234luggage
&client_id=xxxxxxxxxx
&client_secret=xxxxxxxxxx
Para mais informações: https://developer.okta.com/blog/2018/06/29/what-is-the-oauth2-password-grant
Autenticação Externa - Rac:
O Tenant pode ser configurado para realizar a autenticação externa, onde a validação do usuário e senha serão realizadas em um endpoint do produto.
Será realizado uma chamada no endpoint do Produto configurado no Tenant do Rac para que o usuário e senha sejam validados pelo Produto, em casso de sucesso, o Access Token é retornado para o Produto.
Executando um relatório:
Com o Access Token gerado, ele deve ser enviado no Header Authorization em todas as requisições da Api do Reports.
Ex. “Authorization: Bearer {access_token}”
O fluxo de toda a execução pode ser visto abaixo:
A seguinte chamada deve ser realizada na api do TReports:
POST
Authorization: Bearer {access_token}
Host: {Endereço do TReports}/api/trep/v1/reports/{UidReports}/execute
Content-type: application/json
... {Consultar o Swagger para obter lista completa de parâmetros}
UserName: Nome do Usuário que será enviado ao Provedor Integrado para aplicação de segurança.
Informações | ||
---|---|---|
| ||
Foi criada uma propriedade no objeto "GenerateParams" chamada "CustomData". Trata-se de um propriedade do tipo string que receberá qualquer valor customizado a ser enviado na chamada do endpoint. O valor incluído no enviado na propriedade "CustomData" será adicionado na propriedade "ProviderParams" lista de parâmetros do provedor (ProviderParams) que chegará em todos os endpoints definidos na API de "provedores integrados". ExExemplo: Usuários do Protheus poderão enviar o "grupo de empresas" nessa propriedade para ser utilizada em filtros localizados nos provedores integrados do Protheus, |
Esta requisição gera uma solicitação de execução do relatório, mas não o executa imediatamente. Ele será executado pelo jog do TReports. O retorno será um identificador único da requisição de execução (UidRequest)
Para acompanhamento da execução do relatório, execute a seguinte chamada:
GET
Authorization: Bearer {access_token}
Host: {Endereço do TReports}/api/trep/v1/Generateds/{uIdRequest}/info
Content-type: application/json
{Consultar o Swagger para obter lista completa de parâmetros}
Nesta chamada será retornado o identificador da geração do relatório {id} e o status da execução {status} dentre outras informações. Caso o status seja finalizado, podemos realizar a chamada para obter o relatório gerado no formato desejado:
GET
Authorization: Bearer {access_token}
Host: {Endereço do TReports}/api/trep/v1/Generateds/{id}/file
Content-type: application/json
ExportFileType=0 {Consultar o swagger para uma lista completa das opções de arquivo para download}
Será retornado o binário do arquivo gerado no formato solicitado.
Provedor Integrado:
O fluxo completo utilizando provedor integrado pode ser visto abaixo:
O provedor de dados integrado suporta os seguintes tipos de autenticação:
Basic
É informado o usuário e senha para acesso ao provedor de dados. Essa informação será enviada no cabeçalho da requisição como autenticação Basic
OpenID
O Provedor de dados integrado receberá o access_token do TReports. O token contém o usuário logado no sistema, mas para o caso do fluxo Resource Owner sem a autenticação externa configurada, o usuário do token será sempre o usuário criado para realizar o fluxo Resource Owner. Desta forma, foi criado no Header da requisição a propriedade UserName contendo o nome do usuário informado nos parâmetros da requisição do Execute Request (endPoint: /api/trep/v1/reports/{UidReport}/execute). Caso não seja informado o usuário nos parâmetros do Execute Request, o UserName conterá o usuário do Token.
Informações | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||
|
Informações | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||
|