2011-08-31 132 views
0

我正在創建一個鏈接到SQL Server的Access項目。而不是爲SQL Server使用Windows身份驗證,我想使用特定於應用程序的用戶名/密碼並使用登錄表單自己對用戶進行身份驗證。原因是其他應用程序可能會從Windows身份驗證不是選項的上下文連接到此數據庫(例如,FileMaker Server)。在MS Access中使用VBA進行LDAP身份驗證

我發現無論從哪個角度或從另一個角度來討論這個問題的無數討論,但沒有任何實際上使我能夠實施解決方案。我沒有太多的VBA或LDAP經驗,但我知道這一定是可能的。

所以,我想要做的是:

  1. 要求用戶輸入用戶名和密碼,當他們打開數據庫。
  2. 使用該用戶名和密碼對我們的LDAP服務器進行身份驗證 。
  3. 如果通過則繼續,否則失敗。

有人可以勾畫出這是如何工作或指向我的資源,描述這個?

+0

你已經試過了什麼?你能告訴我們你的代碼嗎? – JMax

+0

我還沒有嘗試過任何東西。在我開始編寫代碼之前,我仍然有工作要做。我真的很想找到一個正確的方向。一旦我理解了如何完成這個概要,那麼我可以混淆實現並在稍後提出具體問題。 – jasongetsdown

+0

當Windows身份驗證不可用時,通常的做法是使用SQL Server身份驗證。這意味着任何試圖使用數據庫的應用程序都將使用相同的身份驗證權限,所以在我看來它可以解決您的問題。你有什麼理由拒絕這種方式? –

回答

1

完成此操作的一種方法是創建一個VBA過程,該過程遍歷所有鏈接的表並更改連接字符串以從登錄表單中嵌入用戶名和密碼。

您可以通過進入調試窗口,鍵入此獲得現有的ODBC連接表的語法:

? CurrentDb().TableDefs("My Table Name").Connect 

這應該給你同樣的東西:

ODBC; DRIVER = SQL服務器; SERVER = MYSQLSERVER001; UID = JPARKER; PWD = Pizza123; APP = 2007 Microsoft Office system; DATABASE = MyDatabaseName

因此,您的登錄表單將捕獲用戶的用戶名和密碼,然後將它們存儲爲變量並用於建立一個新的連接字符串。然後遍歷更新連接屬性的tabledefs集合。發生得非常快。

+0

謝謝吉姆!這將避免需要處理LDAP。 – jasongetsdown

+0

我將不得不使用SQL Server身份驗證權限? – jasongetsdown

+0

請注意,密碼現在可以在連接字符串中顯示給任何可以將數據庫置回零售版Access並運行五行VBA代碼的人。 –

相關問題