Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmentos - Backoffice RM - Integração - API - Segurança nas API's

time.pngTempo aproximado para leitura: 00:10:50 min

Dúvida
Qual diferenças entre as permissões nas API's e as permissões no RM?

Ambiente
Cross Segmentos - Backoffice RM - Integração - Todas as versões.


Solução

Inversão na Lógica das Permissões

As Permissões nas API's tem um conceito diferente das permissões no RM.
Quando um usuário não tem permissão em determinada rotina ou funcionalidade, para uma determinada coligada, usualmente o RM levanta uma exceção, onde é apresentado ao usuário o motivo do erro, mediante uma janela.

1. Exemplo de permissão no RM:

Usuário sem permissão para executar uma funcionalidade do sistema na coligada 1:



Nas Api's, a permissão em uma rotina ou funcionalidade, para uma determinada coligada, se materializa como um filtro, limitando as informações às coligadas que o usuário tem acesso.

2. Exemplo de permissão Filtrando por Coligada nas APIs:

Um usuário que tem permissão na coligada 6 e que executar, por exemplo, a API de Parâmetros, terá informação apenas da coligada 6 mais os parâmetros que forem globais, ou seja, visíveis à todas as coligadas.

Usuário tem permissão apenas a coligada 6:



3. Acesso a Campos:

A segurança de campos apresenta o seguinte conceito:

Quando um usuário não tiver permissão de visualização ou edição em um determinado campo de uma tabela, por restrição de um perfil associado, em uma determinada coligada, mesmo que ele tenha permissão de edição/visualização deste campo em outros perfis, esse usuário não poderá consultar ou alterar o valor do campo em questão.

Importante: O usuário que possuir restrição de visualização de campos não poderá utilizar estes campos em filtros. Caso o usuário faça o envio desta requisição, a API irá retornar um erro de acesso negado, com HTTP Code 403 (Forbidden). A única exceção é no filtro de Fields: nesse caso, o campo com restrição apenas não será retornado pela API.

Exemplo: O usuário "Teste" não pode visualizar o campo gusuario.status. Logo, qualquer requisição feita tentando passar o campo status (active) em um filtro (como em: http://{{dominio}}:{{port}}/api/framework/v1/users?active=true) a API retornará erro 403.

Nas Api's, a permissão em uma rotina ou funcionalidade, para uma determinada coligada, se materializa como um filtro, limitando as informações às coligadas que o usuário tem acesso.

3.1. GET:

• Se a restrição do campo for de "Pode visualizar e não pode alterar", o campo será retornado pela API normalmente.

• Se a restrição do campo for de "Não pode visualizar e não pode alterar", apenas esse campo não será retornado pela API. Lembrete: Um erro de permissão pode ser retornado caso exista filtro utilizando o campo com restrição de visualização.

| POST:

• Mesmo que o usuário envie uma requisição contendo, no Body, um campo com restrição de edição, a API irá ignorar esse campo enviado.

Caso ele possua algum valor default declarado explicitamente no seu mapeamento, o insert será feito com o valor default.

Caso não possua um valor default, ele será preenchido na base com o valor default do tipo de dado. Ex.: Int = 0; String = null.

3.2. PUT e PATCH:

• Usuários que tenham restrição de edição de campos, conseguirão utilizar o PUT/PATCH apenas se a requisição não tentar alterar o campo com restrição.

Usando a propriedade SkipCheckPropertyMapInfoForFieldLevelSecurity = False
Internamente a Lib fará uma comparação desses valores: O valor enviado no Body e o valor persistido na base.

Para isto o mapeamento deve informar obrigatoriamente a PropertyMap, usando o método de overload map(), exemplo:

Map(e => e.Nome, dto => dto.Name); Em negrito esta definida a PropertyMap ou

Map(e => e.NomeFantasia, dto => dto.NomeFantasia);

Mesmo que o mapeamento não seja necessário.

Usando a propriedade SkipCheckPropertyMapInfoForFieldLevelSecurity = True
A comparação não será realizada e uma exceção será levantada para o campo com restrição.

Neste caso o mapeamento pode ser utilizado de forma mais simplificada, quando necessário, ou seja, não é obrigatório como no exemplo acima:

Map(e => e.NomeFantasia); Não é necessário informar PropertyMap

 

Existem duas formas de enviar o corpo da requisição:
• Incluindo o campo com restrição de edição no Body: Nesse caso, o valor do campo deve ser o mesmo valor salvo na base. Caso contrário, a API irá retornar um erro de acesso negado, com HTTP Code 403 (Forbidden), pois será considerado que o usuário está tentando alterar esse conteúdo.

• Não incluindo o campo com restrição de edição no Body (Apenas para PUT): Nesse caso, a API irá considerar o valor padrão do campo.

Caso ele possua algum valor default declarado explicitamente no seu mapeamento, o PUT considerará que o valor enviado no Body é o valor default do campo.

Caso não possua um valor default mapeado, ele será preenchido na base com o valor default do tipo de dado. Ex.: Int = 0; String = null.

Em ambos os casos, o valor do campo deve ser o mesmo valor salvo na base. Caso contrário, a API irá retornar um erro de acesso negado, com HTTP Code 403 (Forbidden)pois será considerado que o usuário está tentando alterar esse conteúdo.
Obs: Para a propriedade SkipCheckPropertyMapInfoForFieldLevelSecurity = False

3.3. DELETE:

• Usuários que tenham restrição de edição de campos, não conseguirão remover o registro, será emitido um aviso informando o campo com restrição.

Saiba Mais
Segurança nas APIs

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _