GNU Health/中央認證
對於大型的、分散式的 GNU Health 安裝,例如公共醫院網路,您可能需要考慮採用中央使用者認證模型。
在這種方法下,使用者及其登入憑據在中央進行管理,因此可以方便地在需要時建立、修改和/或撤銷它們。
GNU Health 中的中央認證模型非常靈活,允許每個醫療機構擁有不同的角色。例如,一名醫護人員可以在兩個不同的醫療中心工作。Cameron Cordara 醫生上午在GNU SOLIDARIO 醫院擔任家庭醫生,下午與社會工作者合作,在當地基層醫療機構會見社群。兩個中心兩個不同的角色,但只有一人,一個登入。
注意:本文件基於FreeBSD和OpenLDAP下的安裝,但它也應該在其他 Free/Libre 作業系統上執行良好,例如GNU/Linux。還有許多配置和部署選項,例如公鑰基礎設施 (PKI)、LDAP 複製等,在本入門性概念文件中未涵蓋。
- OpenLDAP 伺服器 (slapd)
- Tryton 伺服器模組:trytond_ldap_authentication
- 醫護人員在登入提示符處輸入使用者名稱/密碼。
- 憑據在 OpenLDAP 伺服器上進行檢查。
- 場景 1:使用者存在於 OpenLDAP 資料庫中。如果提供的密碼正確,則使用者將使用其本地授權配置檔案登入。如果使用者輸入了錯誤的密碼,則會再次出現登入提示符。
- 場景 2:使用者不存在於 OpenLDAP 資料庫中。憑據在醫療機構的本地 GNU Health 資料庫中進行檢查。
- 場景 3:OpenLDAP 伺服器無法訪問(網路故障、伺服器宕機等)。與場景 2 相同的規則適用。
安裝 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>

配置完 OpenLDAP 伺服器並建立使用者後,您需要配置 GNU Health Tryton 例項以與其通訊。
- 安裝以下 Tryton 模組
- trytond_ldap-authentication
- 建立新的 LDAP 連線(管理 → LDAP → 連線)
- 填寫資訊以滿足您的 LDAP 伺服器規範。
- 儲存連線
- 在 GNU Health 中建立使用者(管理 → 使用者 → 使用者)
您現在可以建立一個與 LDIF 檔案中的 uid 匹配的使用者,併為其分配本地角色。在這種情況下,我們將螢幕上的“登入”名稱與組織中使用者的 uid 匹配。對於 Cameron Cordara 醫生,登入名稱將是cameroncordara。同樣,這只是為了演示目的。在現實場景中,您將使用唯一的識別符號作為登入名稱。
注意:您會注意到密碼欄位已被“填充”。這是因為實際的使用者密碼現在儲存在 LDAP 伺服器中,而不是您的本地例項資料庫中。
如果一切順利,您現在已經為中央認證啟用了 GNU Health。嘗試以“cameroncordara”身份登入。她的憑據將在 LDAP 伺服器上進行檢查。