Versão disponível: A partir da 4.16
O Sankhya Om possui uma API que permite sua integração com outras aplicações.
O funcionamento básico desta API consiste em logar na plataforma com um usuário válido, e, em seguida, realizar a chamada de um serviço que efetuará uma determinada ação no Sankhya Om como, por exemplo, a inserção de um registro ou consulta de dados.
Visando aumentar a segurança neste cenário, criamos a camada de autorização para API (Authorization Layer), que permite ao usuário responsável pela nossa plataforma de ERP, delimitar o acesso de seus serviços a partir de integrações via API, ou seja, além da necessidade de possuir um usuário válido e realizar sua autenticação, as aplicações integradas à plataforma Sankhya Om precisaram possuir autorização para consumir determinado serviço da plataforma Sankhya.
Por exemplo, é de interesse que ocorra a integração para a inclusão de pedidos no Sankhya Om. Para isso, além das credenciais de acesso que devem ser compartilhadas, o usuário que será utilizado na integração deverá receber acesso à tela Portal de Vendas.
Trataremos neste artigo os seguintes tópicos:
Configurações necessárias
01- Propriedade da JVM
No servidor de aplicação (Jboss/Wildfly), adicione a seguinte propriedade:
-Dsnk.authorization.layer.enable=true
Feito isso, você deve habilitá-la como uma propriedade da JVM no arquivo de configurações de inicialização do servidor de aplicação.
Vale lembrar que, para Wildfly esta configuração pode ser feita em três arquivos:
- /wildfly/bin/standalone.conf
- /wildfly/bin/standalone.conf.bat
- /wildfly/bin/standalone.bat
Confira na imagem abaixo um exemplo de configuração no arquivo standalone.bat.
Inclusão da propriedade no arquivo standalone.bat
02- Concessão de acesso
Com o servidor de aplicação já em execução, agora iremos conceder a permissão de acesso aos serviços do Sankhya Om ao usuário que irá consumir a API de integração.
O primeiro passo para essa ação é a classificação do usuário que irá ser utilizado na integração, para isso acesse a tela Usuários e na aba Identificação, campo "Tipo usuário" deve-se classificar o usuário como "Integração".
Na sequência, acesse a tela Acessos e inclua a permissão ao usuário na tela cujo serviço a ser chamado é utilizado. Por exemplo, a liberação do acesso de consulta a tela Movimentação Financeira para o consumo do serviço "DatasetSP.loadRecord" na entidade Financeiro (tabela TGFFIN).
Concedendo acesso ao consumo de dados da entidade Financeiro (TGFFIN) a partir do serviço DatasetSP.loadRecord ao usuário Integração01.
Utilização
Com essa iniciativa não foi implementado alterações nas chamadas de serviços da API, o único ponto que passa a ser de suma importância é a concessão de acesso para o devido consumo e caso o usuário não receba a devida autorização, ao realizar a chamada receberá o retorno conforme demonstrado na imagem abaixo.
Utilização negada do serviço DatasetSP.loadRecords devido a falta de autorização
Existe uma mudança em andamento referente a API de integração, porém, não possui relação com este recurso. Para mais informações acesse o artigo API de Serviços Gateway.
Consulta de dados
Pode-se gerir a consulta de dados direto na entidade por meio de uma view, o que o permitirá limitar o acesso para apenas as informações nessa aplicação.
Para realizar essa consulta, deve-se utilizar o serviço "CRUDServiceProvider.loadView" de forma que é preciso efetivar a requisição do login, e logo depois, do serviço da seguinte maneira:
curl --location 'https://api.sankhya.com.br/gateway/v1/mge/service.sbr?
serviceName=CRUDServiceProvider.loadView&outputType=json&preventTranform=false&globalID=B8
93D5559FFD17C20D29B9B20140EB1B' \
--header 'Content-Type: text/plain' \
--header 'Cookie: JSESSIONID=7ymCJoN_1mjPl9k5AACPaCB-HkFtLUjB1wiQvE0j' \
--data '{
"serviceName": "CRUDServiceProvider.loadView",
"requestBody": {
"query": {
"viewName": "[NOMEview]"
}
}
}'
A requisição pode conter filtros. Porém, dentro desse contexto a estrutura dessa forma atende o proposto.
É necessário que o usuário do tipo integração possua acesso ao LoadView para a execução da chamada nesse serviço em ambientes em que a camada de autorização está ativa. O acesso a este recurso é concedido por meio da tela Acessos:
Desse modo, caso não possua esse acesso, ao executar a requisição, o retorno abaixo será recebido:
"O usuário logado não possui permissão para acessar a View."
Pode-se verificar todas as views disponíveis por meio do caminho "Módulos > Configuração > View".
Informações adicionais acerca da View:
- A validação deve ocorrer apenas quando a camada de autorização estiver ativa, conforme abaixo:
-Dsnk.authorization.layer.enable=true
- Com a camada de autorização ativa e o valor do parâmetro "AUTHLAYERVIEW" false, será validado se o usuário possui a configuração "Consultar" do serviço LoadView e se sim, este terá acesso a todas as views criadas no ambiente.
- Caso o parâmetro AUTHLAYERVIEW seja alterado para true, deve-se verificar se o usuário possui acesso para realizar as consultas. Assim, caso tenha permissão apenas para "Alterar", "Excluir", "Configurar", "Numeração" ou "Filtro avançado", este não poderá consultar a view, ou seja, é necessário que a opção Consultar da tela de Acessos seja configurada para um usuário ou grupo de usuários.
- Se a View for configurada apenas no Banco de Dados, ou seja, não é exibida na tela de Acessos ou ainda, compartilhada quando requisitada via serviço, o usuário receberá a mensagem que este não possui permissão para o acesso.
Comentários
0 comentário
Por favor, entre para comentar.