經過一個多月的精心分析研究終於完成sql server的驗證流程,把驗證過程分開實作在sql server的中間件oneproxy-for-sqlserver中了。目前oneproxy-for-sqlserver已經實作前後端密碼分離功能。可以透過平民軟體了解更多情況或追蹤本專案的wiki了解情況。
至從oneproxy-for-sqlserver的1.1.0版本開始支援密碼分離的功能,oneproxy-for-sqlserver是在開源框架oneproxy-monotor下開發的。前端使用與登入資料庫不同的使用者名稱和密碼來登入中間件oneproxy-for-sqlserver,oneproxy-for-sqlserver在使用另一個使用者名稱和密碼來登入資料庫。下面來講解配置與使用情況:
[oneproxy] logfile = oneproxy_log.log pidfile = oneproxy_pid.pid listen_addr = 0.0.0.0 listen_port = 9999,8888,7777,6666 httpserver_addr = 0.0.0.0 httpserver_port = 8080 log_level = error data_dump = false log_sql = false clientusername = admin clientpassword = 123456 passwordseparate = true [database_1433] host = 127.0.0.1 port = 1433 username = sa password = 0000 [sqlserver_9999] dbmastergroup = database_1433 classname = SSProtocol frontport = 0
上面是設定檔中的內容,與密碼分離相關的配置在[oneproxy]和[database_xxx]標籤下面都有,下面是[oneproxy]標籤下的配置,這個配置的是客戶端使用的使用者名稱和密碼情況。 passwordseparate指示中間件使用這個功能還是不要使用這個功能。預設情況(沒有此配置項)下是為true。如果需要關閉密碼分離功能,則設定此配置為false即可。
clientusername = admin clientpassword = 123456 passwordseparate = true
同時要注意的是資料庫的資訊必須放到[database_xxx]標籤下,標籤的名稱必須是database開頭即可。登入資料庫的使用者名稱和密碼則必須放到資料庫標籤下面,透過username和password來指定。
測試環境:
伺服器版本:
Microsoft SQL Server 2014 - 12.0.2000.8 (X64) Feb 20 2014 20:04:26 Copyright (c) Microsoft Corporation Express Edition (64-bit) on Windows NT 6.3 <X64> (Build 14393: ) (Hypervisor)
客戶端程式與版本:
1. sqlserverjdbc4
2. Microsoft SQL Server Manager studio
3. st