Linux

使用 Oracle 標準的外部身份驗證

  • June 16, 2014

我想使用自定義外部應用程序從外部驗證我的客戶端連接。這可能使用 Oracle Standard 11g 嗎?如果是這樣,怎麼做?

(我們的自定義外部應用程序將無法訪問使用者密碼,它只會將申請轉發到其他地方)

我找到的唯一文件是關於作業系統身份驗證或使用錢包的。

恐怕這實際上是不可能的。在 Oracle 的術語中,外部身份驗證意味著:"If users's name on client machine is identical to user's username in database, then user does not have to enter ANY password". 這種身份驗證方式非常弱,必須與其他安全功能結合使用,例如您允許使用者僅從一個受信任的安全主機登錄。

Oracle 不支持任何 PAM 模組(例如 Informix)或其他任何模組。唯一的選擇是如何將 Oracle 連接到外部身份驗證系統:

  • Kerberos/RADIUS - 需要企業版和高級安全選項,這可能需要額外的許可
  • N 層身份驗證 - 類似於 Oracle 級別的 Unix su。但這需要應用程序方面的支持。
  • 登錄觸發器啟用密碼保護角色。

事實上,如果您需要為客戶端進行外部身份驗證,可以通過外部密碼儲存來完成:

1)您需要使密碼外部使用SHA-1雜湊算法。(注意這與 jdbc-4 不兼容)。

2)打開sqlnet.ora並確保它包含以下行(如果注意您需要添加它然後保存並關閉)

sqlnet.allowed_logon_version=12

要麼

sqlnet.allowed_logon_version=11

請注意,11 和 12 取決於伺服器規範。

3)注意這一步是可選的,它使密碼更強大,但我建議使用它:

ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = TRUE;

4)你需要一個錢包,它用於安全認證

5)創建錢包後,您需要列出外部密碼內容,可以通過以下方式完成:

mkstore -wrl wallet_location -listCredential
  1. 現在您需要一種方法讓客戶端連接到您的數據庫,例如活動目錄(例如 oracle 網際網路活動目錄)和kerebros身份驗證

** 如何啟動 LDAP 身份驗證:ALTER SYSTEM SET LDAP_DIRECTORY_SYSAUTH = YES;

** 如何通過密碼或SSLALTER SYSTEM SET LDAP_DIRECTORY_ACCESS = XXX;其中 xxx= 密碼或SSL(您需要選擇其中之一而不是兩者)來建立連接類型。

引用自:https://dba.stackexchange.com/questions/68209