簡體   English   中英

使用Windows憑據連接到DB2

[英]Connect to DB2 with Windows credentials

我正在從事一個VBA項目,在該項目中我需要同時連接到SQL-和DB2-Database。 在兩種情況下,我都使用ADODB連接。 SQL正常運行,並且正在使用Windows憑據。 我可以通過傳遞用戶名和密碼來使DB2連接正常工作,但是不使用Windows憑據(它們是相同的)。 請參見連接字符串以獲取示例:

此SQL連接字符串可以正常工作:

objConnection.connectionString = "Provider=SQLOLEDB.1; Integrated Security=SSPI; Persist Security Info=False;Data Source= " & strServer & ";Initial Catalog=" & strDatabase

只要我在open方法中傳遞密碼,此DB2連接字符串也可以正常工作:

strConnection = "Provider=IBMDADB2.1; User ID=" + nlUsername + "; Data Source=DB_" + strDatabase + "; Persist Security Info=False"
objConnection.Open(strConnection, nlUsername, nlPassword)

我想在DB2 SQL的方法-所以我想這一點,它工作:

objConnection.connectionString = "Provider=IBMDADB2.1; Integrated Security=SSPI; Persist Security Info=False; Data Source=DB_" & strDatabase

甚至可以在不傳遞用戶名和密碼的情況下連接到DB2嗎? 我必須提示用戶輸入這些內容才能連接嗎?

我假設我們正在談論DB2 for LUW。

一種簡單的方法是啟用客戶端身份驗證。 在DB2服務器上設置以下實例配置參數:

update dbm cfg using authentication client trust_clntauth client trust_allclnts yes

您將需要重新啟動實例以使更改生效( db2stop / db2start )。

在客戶端目錄上,涉及客戶端認證的數據庫:

uncatalog db yourdb
catalog db yourdb at node whatever authentication client

如果當前在沒有顯式服務器端身份驗證選項的情況下對數據庫進行了編目,則可能不需要最后兩個步驟( uncatalog / catalog )。

請注意,這種配置不是很安全,因為它允許任何Windows用戶登錄Windows后無需身份驗證即可連接到數據庫(實際上是DB2服務器上的任何數據庫)。 您可能要通過撤銷PUBLIC偽組中的所有授予並僅對應用程序登錄ID授予特定權限來加強數據庫的安全性。

另外,您可以啟用Kerberos身份驗證,但這是一個更加復雜的過程,如手冊中所述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM