跳转至内容

GNU Health/中央认证

来自维基教科书,为开放世界提供开放书籍



对于大型的、分布式的 GNU Health 安装,例如公共医院网络,您可能需要考虑采用中央用户认证模型。

在这种方法下,用户及其登录凭据在中央进行管理,因此可以方便地在需要时创建、修改和/或撤销它们。

GNU Health 中的中央认证模型非常灵活,允许每个医疗机构拥有不同的角色。例如,一名医护人员可以在两个不同的医疗中心工作。Cameron Cordara 医生上午在GNU SOLIDARIO 医院担任家庭医生,下午与社会工作者合作,在当地基层医疗机构会见社区。两个中心两个不同的角色,但只有一人,一个登录。

注意:本文档基于FreeBSDOpenLDAP下的安装,但它也应该在其他 Free/Libre 操作系统上运行良好,例如GNU/Linux。还有许多配置和部署选项,例如公钥基础设施 (PKI)、LDAP 复制等,在本入门性概念文档中未涵盖。

  • OpenLDAP 服务器 (slapd)
  • Tryton 服务器模块:trytond_ldap_authentication

中央认证工作流程

[编辑 | 编辑源代码]
  1. 医护人员在登录提示符处输入用户名/密码。
  2. 凭据在 OpenLDAP 服务器上进行检查。
场景 1:用户存在于 OpenLDAP 数据库中。如果提供的密码正确,则用户将使用其本地授权配置文件登录。如果用户输入了错误的密码,则会再次出现登录提示符。
场景 2:用户不存在于 OpenLDAP 数据库中。凭据在医疗机构的本地 GNU Health 数据库中进行检查。
场景 3:OpenLDAP 服务器无法访问(网络故障、服务器宕机等)。与场景 2 相同的规则适用。

在 LDAP 服务器上创建组织和用户

[编辑 | 编辑源代码]

安装 OpenLDAP 后,您需要创建组织、角色和用户,以便 LDAP 客户端和 GNU Health 可以与服务器交互。

以下LDIF 文件用于创建基本组织和用户,仅用于演示目的。

示例 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


您现在可以上传您新创建的 LDIF 文件,以填充初始 OpenLDAP 数据库,例如

$ slapadd -l <your_ldif_file>

在 GNU Health 中配置 LDAP

[编辑 | 编辑源代码]
使用 OpenLDAP 进行用户集中认证的 GNU Health 配置

配置完 OpenLDAP 服务器并创建用户后,您需要配置 GNU Health Tryton 实例以与其通信。

  • 安装以下 Tryton 模块
    • trytond_ldap-authentication
  • 创建新的 LDAP 连接(管理 → LDAP → 连接)
    • 填写信息以满足您的 LDAP 服务器规范。
    • 保存连接
  • 在 GNU Health 中创建用户(管理 → 用户 → 用户)

您现在可以创建一个与 LDIF 文件中的 uid 匹配的用户,并为其分配本地角色。在这种情况下,我们将屏幕上的“登录”名称与组织中用户的 uid 匹配。对于 Cameron Cordara 医生,登录名称将是cameroncordara。同样,这只是为了演示目的。在现实场景中,您将使用唯一的标识符作为登录名称。

注意:您会注意到密码字段已被“填充”。这是因为实际的用户密码现在存储在 LDAP 服务器中,而不是您的本地实例数据库中。

如果一切顺利,您现在已经为中央认证启用了 GNU Health。尝试以“cameroncordara”身份登录。她的凭据将在 LDAP 服务器上进行检查。

模块 · 补丁和补丁集

华夏公益教科书