2012-06-07 84 views
5

我正在編寫一個pGina插件,以便在登錄時從我們的KDC獲得AFS令牌和Kerberos TGT,同時我發現kinit的'特性'是它不會讓你提供任何輸入除非它來自鍵盤,那麼我的想法只是重定向標準輸入...創建一個keytab在Windows下與kinit一起使用

有人建議使用主體的keytab文件,這似乎超級簡單,直到我意識到我只會在linux上使用kutil並且在使用ktpass.exe的Windows版本時遇到困難。我已經有大量的參數組合的多次試圖創建一個密鑰表,但都沒有絕對的成功至今,當前的命令,我發出的是:

ktpass /out key.tab /mapuser [email protected] /princ [email protected] /crypto RC4-HMAC-NT /ptype KRB5_NT_PRINCIPAL /pass mahpasswordlol /target MERP.EDU

不幸的是這一切的輸出是

Using legacy password setting method

FAIL: ldap_bind_s failed: 0x31

根據我的研究,這是一個認證/加密問題,我已與其他d試了一下ES設置,但這似乎也不工作...任何人都有任何經驗/想法如何這可能工作?

+0

在Windows 2008 R2 Active Directory及更高版本中,DES被默認禁用。當你嘗試這個時候,這可能就是那個特定方面的問題。 –

回答

8

ktpass.exe確實很糟糕;我不使用它。所以,應該使用ktutil在Unix上創建一個匹配的密鑰表獨立使用的密碼,例如:

$ ktutil 
ktutil: addent -password -p [email protected] -k 1 -e aes128-cts-hmac-sha1-96 
Password for [email protected]: 
ktutil: l 
slot KVNO Principal 
---- ---- --------------------------------------------------------------------- 
    1 1         [email protected] 
ktutil: wkt /tmp/zz 
$ klist -ek /tmp/zz 
Keytab name: WRFILE:/tmp/zz 
KVNO Principal 
---- -------------------------------------------------------------------------- 
    1 [email protected] (aes128-cts-hmac-sha1-96) 

LDAP綁定錯誤指示的ktpass無法驗證你的域控制器;當這種情況發生時,您是否登錄了域帳戶?它必須是一個域帳戶,而不是一個本地帳戶(它必須被授權對AD進行必要的更改,儘管缺乏這會給權限錯誤而不是綁定)。

FWIW,我們採取了不同的方法:我們在Unix和AD領域之間使用跨領域信任。用戶登錄後的AD TGT就足以獲得Unix領域中服務的憑證;例如,我可以使用PuTTY將SSH SSH轉換爲Unix主機,Firefox/Chrome/IE以對Unix Web服務(Apache/mod_auth_kerb)進行身份驗證等。

+0

當您使用交叉信任時,您是否覆蓋UNIX和WINDOWS DNS名稱,或者您是否設置了子域以包含UNIX主機? –

+1

我們重疊;也就是說,沒有簡單的規則可以區分兩個領域的主機名稱。但是,如果可行,我建議爲每個域使用不重疊的域,例如* .WIN.FOO.COM和* .UNIX.FOO.COM;我們的混合架構是我們現在無法改變的傳統基礎架構的結果。爲了確保所有票務請求都能到達正確的位置,混合設置需要雙方的引薦和/或靜態域/領域配置形式的相當複雜的操作。我最近在全新的部署中使用了不同的域名,以避免這一切。 –

相關問題