我们正在编写可在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