2014-05-11 32 views
1

我有一個Windows C++應用程序,它使用libpq來處理PostgreSQL。C++如何將MIT Kerberos與libpq一起使用?

我的代碼是:

std::string conninfo = "host=localhost port=5432 dbname=test connect_timeout=10"; 
_connectionHandlerPtr = PQconnectdb(conninfo.c_str()); 

現在我需要使用MIT Kerberos進行身份驗證。 我安裝了MIT Kerberos。

我需要在我的代碼中做什麼? 我需要在PostgreSQL配置中進行更改嗎?

回答

1

我不認爲你需要改變你的代碼中的任何東西。快速查看psql表明所有的Kerberos支持都是通過libpq處理的,所以psql不必在意;你的應用也應該如此。

如果您的系統設置爲Kerberos身份驗證並且有票證,則只需在您的libpq連接字符串中設置krbsrvname即可。見the libpq parameters。在Windows上,如果您要使用MIT Kerberos而不是SSPI,則可能還需要將gsslib設置爲gssapi

+0

Thnx,是的,我想使用MIT Kerberos。你能說:我應該在這種情況下使用什麼樣的主要形式?他們寫它必須像這樣servicename \ name @ realm?另外,我需要在conninfo中使用哪些參數?用戶名?密碼? – Oleg

+0

密碼與Kerberos無關。如果與用戶的系統本地用戶名(當然,它必須與kerberos票證相匹配)和服務名稱不匹配,您將需要用戶名。其他選項(如任何領域覆蓋)由MIT kerberos環境變量或「krb5.conf」設置(如果需要)請參閱http://web.mit.edu/kerberos/krb5-devel/doc/admin/env_variables.html –

+0

我應該以格式servicename \ user1 @ realm在PGSQL中創建用戶,還是僅在PGSQL中使用用戶'user1'?而在conninfo我使用'servicename \ user1 @ realm'?有點與格式混淆 – Oleg

相關問題