Conceitos
Entidades
Entidade é a representação jurídica da corporação que possui a licença do software, além da representação jurídica e legal da entidade em si. As entidades são cadastradas pela própria Betha Sistemas, como uma efetivação da entidade proprietária de uma licença de uso do software.
Times
De modo geral, times são grupos com permissões específicas dentro de um escopo na Entidade em qual foi criado.
Acessos
Local onde são concedidos acessos aos usuários para que possam utilizar os produtos Betha.
Licenças
Local onde são concedidos as licenças (liberações) para que as entidades possam utilizar os produtos Betha.
Segurança
Um item que faz parte da segurança e que deve ter uma atenção considerável é o token, pois ele é responsável pela manipulação de dados. Portanto, tenha bom senso e não dê a chave para ninguém e não deixe visível em lugares em que as pessoas tenham acesso.
Mas, o que é um token?
Token é um certificado digital, que gera uma senha para que o usuário possa realizar movimentações de dados.
Exemplo: pense em uma chave que pode manipular tanto um sistema como uma integração entre dois ou mais sistemas. Para realizar ações como essa é necessário ter certa criticidade e saber muito bem o que está fazendo.
Quando gerado um token jamais anexe em chamados ou chat, sempre envie via e-mail.
Access Token
O Access token é uma credencial representada por um conjunto de caracteres alfanuméricos que fornecem as informações necessárias para autorizar um usuário a utilizar uma determinada API. Cada token está vinculado com um ou mais escopos que definem se o mesmo é apto para o consumo das API’s. O access token é utilizado no cabeçalho das requisições através da propriedade “authorization”, conforme exemplo a seguir:
curl
'https://plataforma-autorizacoes.betha.cloud/user-accounts/v0.1/api/suite/users/@me/access/ZGF0YWJhc2U6MTAwMjA1LGVudGl0eTo1MzE2' \
-H 'Authorization: Bearer 48ef47b7-322e-4a77-8019-7994298e5eb1' \
User-Access
Para realizar o consumo dos dados de um cliente específico, é necessária a geração prévia de um user-access que fornece a permissão para acesso aos dados de clientes que serão utilizadas nas requisições em conjunto com o Access token. É uma autorização dada aos usuários que lhes permite acessar recursos específicos de um determinado cliente. É a geração do usuário para estar realizando credenciais com os escopos necessários para autorização de consumo das API's. Muito utilizado nas requisições dos usuários, sistema e contexto para coletar informações. Segue exemplo de uma requisição com user-access:
curl
'https://plataforma-autorizacoes.betha.cloud/user-accounts/v0.1/api/access/61d374cf8975d901043c69a4/systems' \
-H 'authorization: Bearer a3ca2a5f-9386-4473-977a-f8eee51e8d72' \
-H 'user-access: 9KhjaHpS4B6Leuh_KBEvDg==' \
Para realizar a geração de um user-access é necessário que o cliente tenha em mãos a chave pública da credencial de serviço já vinculada a API, e esta deve ser utilizada na tela de autorizações do próprio sistema para a geração do user-access. Uma vez com o user-access em mãos, já é possível realizar a interação das API’s com dados daquele cliente.
Propriedades de uma licença (onde e como usar)
Existem cenários onde um parceiro Betha pode ter um subdomínio por sistema, ou seja, para cada liberação de um sistema, será necessário ter um domínio, como por exemplo:
- criciuma.sistema.betha.cloud
- riodosul.sistema.betha.cloud
Como esse domínio é dinâmico e totalmente acoplado a uma licença, dado o cenário da informação será colocado na propriedade, que é um campo dentro do cadastro de licenças, que poderá ser informado pelo Admin ou diretamente no CRM que são sistemas que gerenciam as licenças, lembrando que, uma licença é liberada para um sistema e entidade.
O campo propriedade, é uma String Json, que irá aceitar qualquer valor, não limitando apenas ao cenário citado de domínios, mas podendo ser usado em diversos cenários como por exemplo: permissões dentro de um sistema, entre outros.
Exemplo do valor do campo propriedade:
{
"dominio": "criciuma",
"liberado": true,
"codigo": 10,
“chaveexemplo”: “valorexemplo”
}
No cenário para uso de domínio, será informado a propriedade da licença, com o domínio e na configuração do Projeto, na URL do Produto deverá ser informado de forma dinâmica.
Para demais cenários, o campo propriedade poderá ser consultado através das requisições que retornam dados do acesso, como:
- https://plataforma-autorizacoes.betha.cloud/user-accounts/v0.1/api/suite/users/@me/access
- https://plataforma-autorizacoes.betha.cloud/user-accounts/v0.1/api/suite/users/@me/access/ZGF0YWJhc2U6MTA4NDQsZW50aXR5OjEwNTQ=
- https://plataforma-autorizacoes.betha.cloud/user-accounts/v0.1/api/users/@me/access
- https://plataforma-autorizacoes.betha.cloud/user-accounts/v0.1/api/users/@me/access/ZGF0YWJhc2U6MTA4NDQsZW50aXR5OjEwN
Para mais detalhes dessas requisições, veja no tópico Autorizações.
O objetivo aqui, é mostrar o retorno que terá a propriedade da licença, como mostra o exemplo abaixo:
{
"id": "60a2dfc82170040104d12a72",
"licenseId": "KBgAQZmL5-cEXQLuuniWag==",
"admin": true,
"user": "teste.lamego",
"createBy": "guilherme.lamego",
"createAt": "2021-05-17T21:27:36.803+0000",
"context": "ZGF0YWJhc2U6MTA4NDQsZW50aXR5OjEwNTQ=",
"totalGroups": 0,
"totalRestrictions": 0,
"system": 56,
"technical": false,
"expiresIn": null,
"connected": true,
"firstActivity": "2022-02-18T19:55:57.214+0000",
"lastActivity": "2022-02-18T19:55:57.214+0000",
"accepted": true,
"acceptedIn": "2022-02-16T10:05:30.273",
"licenseProperty": {
"chave2": "valor2",
"chave1": "valor1"
},
"values": {
"database": "10844",
"entity": "1054"
}
Onde é possível verificar o valor da propriedade do atributo licenseProperty.
Multi-tenancy
Multi-tenancy é o termo utilizado para definição de arquiteturas que propõem a organização de múltiplos clientes dentro de um serviço. Os serviços da Betha organizam os dados de cliente em databases físicos em um único schema, porém, o isolamento dos dados dos clientes se dá através de duas camadas: o database e a entidade.
O database é o nível mais elevado de particionamento lógico das informações armazenadas, do qual agrupa todos os dados de um único cliente. Quanto a entidade representa um subnível de particionamento dentro de um database, onde é possível definir quais dados serão completamente isolados, e quais dados podem ser compartilhados entre entidades dentro de um mesmo database.