支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11

20.11. RADIUS 身份驗證 #

此身份驗證方法的操作方式與 password 類似,不同之處在於它使用 RADIUS 作為密碼驗證方法。RADIUS 僅用於驗證使用者名稱/密碼對。因此,使用者必須已存在於資料庫中,才能使用 RADIUS 進行身份驗證。

使用 RADIUS 身份驗證時,將會傳送一個 Access Request 訊息到已設定的 RADIUS 伺服器。此請求的類型將為 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"""

提交更正

如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單來回報文件問題。