這種認證方法與 password
認證方法類似,只不過它使用 RADIUS 作為密碼驗證方法。RADIUS 僅用於驗證使用者名稱/密碼對。因此,在使用 RADIUS 進行認證之前,使用者必須已存在於資料庫中。
使用 RADIUS 認證時,會向配置的 RADIUS 伺服器傳送一個 Access Request 訊息。此請求的型別為 Authenticate Only
,幷包含 user name
、password
(已加密)和 NAS Identifier
引數。請求將使用與伺服器共享的金鑰進行加密。RADIUS 伺服器將使用 Access Accept
或 Access Reject
來響應此請求。不支援 RADIUS 記賬。
可以指定多個 RADIUS 伺服器,在這種情況下,它們將按順序嘗試。如果從伺服器收到否定響應,認證將失敗。如果沒有收到響應,將嘗試列表中的下一個伺服器。要指定多個伺服器,請用逗號分隔伺服器名稱,並將列表括在雙引號內。如果指定了多個伺服器,其他 RADIUS 選項也可以作為逗號分隔的列表給出,以便為每個伺服器提供單獨的值。它們也可以指定為單個值,在這種情況下,該值將應用於所有伺服器。
RADIUS 支援以下配置選項:
radiusservers
要連線的 RADIUS 伺服器的 DNS 名稱或 IP 地址。此引數是必需的。
radiussecrets
在與 RADIUS 伺服器安全通訊時使用的共享金鑰。此值必須與 PostgreSQL 和 RADIUS 伺服器上的值完全相同。建議此字串至少為 16 個字元。此引數是必需的。
加密向量的有效性僅在 PostgreSQL 使用 OpenSSL 構建時才具有密碼學強度。在其他情況下,與 RADIUS 伺服器的傳輸只能視為混淆,而不安全,如有必要應採取外部安全措施。
radiusports
要連線的 RADIUS 伺服器的埠號。如果未指定埠,將使用預設的 RADIUS 埠(1812
)。
radiusidentifiers
用作 RADIUS 請求中 NAS Identifier
的字串。此引數可用於識別使用者嘗試連線的資料庫叢集,這對於 RADIUS 伺服器上的策略匹配非常有用。如果未指定識別符號,將使用預設值 postgresql
。
如果 RADIUS 引數值中必須包含逗號或空格,可以透過將值括在雙引號中來實現,但這很麻煩,因為現在需要兩層雙引號。在 RADIUS 金鑰字串中包含空格的示例如下:
host ... radius radiusservers="server1,server2" radiussecrets="""secret one"",""secret two"""
如果您在本文件中發現任何不正確之處,與您對特定功能的實際體驗不符,或者需要進一步的說明,請使用 此表單 報告文件問題。