2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11

20.11. RADIUS 認證 #

這種認證方法與 password 認證方法類似,只不過它使用 RADIUS 作為密碼驗證方法。RADIUS 僅用於驗證使用者名稱/密碼對。因此,在使用 RADIUS 進行認證之前,使用者必須已存在於資料庫中。

使用 RADIUS 認證時,會向配置的 RADIUS 伺服器傳送一個 Access Request 訊息。此請求的型別為 Authenticate Only,幷包含 user namepassword(已加密)和 NAS Identifier 引數。請求將使用與伺服器共享的金鑰進行加密。RADIUS 伺服器將使用 Access AcceptAccess 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"""

提交更正

如果您在本文件中發現任何不正確之處,與您對特定功能的實際體驗不符,或者需要進一步的說明,請使用 此表單 報告文件問題。