GNU Health/Centro de Autenticação

Origem: Wikilivros, livros abertos por um mundo aberto.

Introdução[editar | editar código-fonte]

Para grandes instalações distribuídas do GNU Health, como em uma rede de hospitais públicos, você pode querer considerar um modelo centralizado de autenticação de usuários.

Segundo este método, os usuários e suas credenciais de login são gerenciadas centralmente, por isso é fácil de criar, modificar e/ou revogar quando necessário.

O modelo de autenticação central no GNU Health é bastante flexível permitindo diferentes papéis por unidade de saúde. Por exemplo, um profissional de saúde pode trabalhar em dois centros de saúde diferentes. Dr. Cameron Cordara trabalha na parte da manhã como um médico de medicina familiar no Hospital GNU SOLIDARIO e à tarde ela coopera com os assistentes sociais e faz reuniões com a comunidade na unidade básica de saúde local. Dois papéis diferentes em dois centros diferentes, mesmo assim uma única pessoa e um único login.

Nota: Esta documentação é baseada em uma instalação em FreeBSD e OpenLDAP, mas deve funcionar bem em outros Sistemas operacionais livres, tais como GNU/Linux. Há também muitas opções de configuração e implantação, tais como infraestrutura de chave pública (PKI), a replicação LDAP, etc., que não são abordados nesta introdução ou documento conceitual.

Componentes[editar | editar código-fonte]

  • OpenLDAP servidor (slapd)
  • Módulos do servidor Tryton: trytond_ldap_authentication

Fluxo de Trabalho de Autenticação Central[editar | editar código-fonte]

  1. O profissional de saúde entra com nome de usuário/senha no prompt de login.
  2. As credenciais são verificados no servidor OpenLDAP.
Cenário 1: O usuário existe no banco de dados OpenLDAP. Se a senha fornecida estiver correta, então ele loga com seus perfis de autorização local. Se o usuário entra com uma senha incorreta, obterá o prompt de login novamente.
Cenário 2: O usuário não existe no banco de dados OpenLDAP. As credenciais são verificadas em relação ao banco de dados local do GNU Health na unidade de saúde.
Cenário 3: O servidor OpenLDAP está inacessível (falha de rede, servidor desconectado, etc.). Mesma regra no Cenário 2 é aplicada.

Instalação[editar | editar código-fonte]

Criando a Organização e Usuários no Servidor LDAP[editar | editar código-fonte]

Depois de instalado OpenLDAP, você precisa criar a organização, as funções e os usuários, para que o cliente LDAP e o GNU Health possam interagir com o servidor.

Segue o arquivo LDIF basicamente para organização e os usuários, apenas para fins de demonstração.

Amostra do arquivo LDIF

# The GNU Health Organization
dn: dc=gnuhealth,dc=org
objectclass: dcObject
objectclass: organization
o: GNU Health Nation
dc: gnuhealth

dn: cn=Manager,dc=gnuhealth,dc=org
objectclass: organizationalRole
cn: Manager

# PEOPLE Organizational UNIT (first level hierchy)
dn: ou=people, dc=gnuhealth,dc=org
ou: people
description: All people in organisation
objectclass: organizationalunit

# Actual users
dn: cn=Cameron Cordara,ou=People,dc=gnuhealth,dc=org
objectClass: inetorgperson
cn: Cameron Cordara
sn: Cordara 
uid: cameroncordara 
userPassword: SecretPass

Agora você pode popular a base de dados inicial do OpenLDAP subindo seu arquivo LDIF recém-criado, como no por exemplo

$ slapadd -l <your_ldif_file>

Configurando LDAP no GNU Health[editar | editar código-fonte]

Configuração do GNU Health para autenticação centralizada de usuários usando o OpenLDAP

Depois de configurar o servidor OpenLDAP e criar seus usuários, você precisa configurar sua instância Tryton do GNU Health para se comunicar com ele.

  • Instalar o módulo seguinte Tryton
    • trytond_ldap-authentication
  • Criar uma nova conexão LDAP (Administração → LDAP → Conexões)
    • Preencha as informações para atender às suas especificações de servidor LDAP.
    • Salvar a conexão
  • Criar um usuário no GNU Health (Administração → Usuários → Usuários)

Agora você pode criar um usuário que corresponda ao uid no arquivo LDIF, e atribuir funções locais para ele. Neste caso, teríamos que coincidir com o nome de "login" na tela, com o uid do usuário em sua organização. No caso da nossa médica Cameron Cordara, o nome de login seria cameroncordara. Novamente, isso é apenas para fins de demonstração. Em situações da vida real você deve usar identificadores únicos para os nomes de login.

Nota: Você vai notar que o campo de senha já está "preenchido". Isso ocorre porque a senha do usuário real reside agora no servidor LDAP, e não em seu banco de dados da instância local.

Se tudo correu bem, agora você tem que habilitar o GNU Health para autenticação central. Tente fazer o login como "cameroncordara". Suas credenciais serão verificadas no servidor LDAP.