Permissões: Inspecionar privilégios de sessão para facilitar a depuração

Atualmente, pode beneficiar de uma poderosa funcionalidade para filtrar o acesso aos dados, o que é essencial para impedir o acesso malicioso à sua aplicação.

Esta funcionalidade utiliza privilégios que permitem determinadas acções nos seus dados. Esses privilégios são atribuídos aos usuários através de funções e armazenados na sessão durante a autenticação.

Em 4D 20R6, melhoramos essa funcionalidade permitindo-lhe inspecionar os privilégios na Session, o que é muito útil para depuração.

Continue lendo para aprender mais.

HDI_GetPrivileges

uma nova função getPrivileges() no objeto Session

Vamos dar uma olhada em um exemplo.

No arquivo roles.json, temos o privilégio medium contendo o privilégio simple. A função Medium contém o privilégio medium.

{
 "privileges": [
  {
   "privilege": "simple",
   "includes": []
  },
  {
   "privilege": "medium",
   "includes": [
     "simple"
    ]
  }
 ],
 "roles": [
  {
   "role": "Medium",
   "privileges": [
    "medium"
   ]
  }
 ],
 "permissions": {
  "allowed": [] // Estabelece as ações permitidas
 }
}

Na classe Datastore, há uma função authentify() que atribui todos os privilégios da função dada para o Session.

exposed Function authentify($role : Text) : Text
	
	Session.clearPrivileges()
	Session.setPrivileges({roles: $role})
	
	return "Authentication done with "+$role

Na classe Datastore, também foi implementada uma função getPrivileges(). Devolve os privilégios em Session.

exposed Function getPrivileges() : Collection
	return Session.getPrivileges()

Se a função authentify() for chamada com a função Medium, a função getPrivileges() é devolvida:

[
"simple",
"medium"
]

Nova API REST /$info/privileges

Há também uma nova API REST para obter os privilégios na sessão. A chamada de /$info/privileges no exemplo acima também retorna:

{
 "privileges": [
  {
  "privilege": "simple"
  },
  {
  "privilege": "medium"
  }
 ]
}

Isso facilita a depuração. Consulte a documentação para saber mais.

Avatar
• Proprietário do produto - Marie-Sophie Landrieu -Yvert entrou ao time 4D Product como Proprietária do Produto em 2017. Como tal, está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Marie-sophie se formou na Escola de Engenharia de ESIGELEC e começou sua carreira como engenheira da IBM em 1995. Participou em vários projetos (de manutenção e criação) e trabalhou como desenvolvedora de Cobol. Depois trabalhou como designer de UML e desenvolvedora de Java. Suas principais funções foram analisar e redigir requisitos funcionais, coordenar os times de negócio e de desenvolvimento.