我們正在編寫可在Windows和Linux上運行的軟件,並計劃使用Windows Active Directory進行身份驗證。我下面描述的問題掙扎,希望得到任何幫助非常多:GSSAPI - Windows Active Directory互操作性 - 錯誤接受上下文:請求中的主體錯誤
域名:CORP.COMPANY.COM
測試編程的一個Linux機器上運行:host1.corp.company.com
測試程序來自krb5-1.11.3下載文件的gss-sample。
服務器將被命名爲「gssapitest」。
基於「一步分步指南的Kerberos 5(KRB5 1.0)互操作性(微軟) ,
首先創建一個用戶‘中的AD主機1’表示主機 host1.corp。 。company.com(Linux機器)
使用的ktpass生成密鑰表(從Windows上運行): 的ktpass/PRINC host/[email protected]/mapuser主機1 /傳 hostpassword/out file1.keytab
現在在AD中,創建另一個d 「gssapitest」 omain用戶以表示測試服務器程序,和地圖用戶類似地: 的ktpass/PRINC gssapitest/[email protected]/mapuser gssapitest /通行證gssapitestpassword /出file2.keytab
將file1.keytab和file2.keytab複製到Linux機器host1,並將它們合併到/etc/krb5.keytab中,並將它們合併爲 。
在Linux中, 「ktutil」 表示/etc/krb5.keytab的像以下內容:
槽KVNO主 1 4 host/[email protected] 2 5 gssapitest /[email protected]
在windows上,爲Linux服務器程序註冊服務(使用「setspn」),以便 結果看起來像(2個條目,一個帶有映射的主機名,另一個帶有實際的主機名,用於測試目的。如果只有一個入口,不管哪一個入口,結果是相同的):
個爲 CN = XXXX註冊ServicePrincipalNames,CN =用戶,DC =公司,DC =公司,DC = COM: gssapitest /主機1:2001 gssapitest/host1.corp.company.com:2001
現在我啓動服務器是這樣的:
GSS-服務器-port 2001 gssapitest
,並開始從另一個終端客戶這樣說:
GSS-客戶-port 2001 - 用戶XXXX -pass xxxxpassword host1.corp .company.com gssapitest 「ABCD」
錯誤顯示了服務器側:
GSS-API錯誤接受上下文:未指定的GSS故障。次要代碼可能提供 提供更多信息 GSS-API錯誤接受上下文:錯誤的請求主體
這可能是什麼原因造成的?我想知道我所概述的關於 的步驟是否都是必需的。以及哪一個根本不需要或不正確。
(注:我試圖登錄到Linux既具有本地用戶帳戶和 在CORP.COMPANY.COM域帳戶,結果顯示了同樣的錯誤 還使用nslookup顯示正確的IP來承載。映射爲Linux機器)。
當您檢查USE DES選項時,將使用最近MIT Kerberos和Windows默認禁用的非常弱加密。 – 2014-09-15 20:51:59