我使用DCOM在Windows网络上提供各种应用程序服务,使用Kerberos处理身份验证。系统通常工作正常,但我遇到了从单独(可信)域访问服务的问题。特别是,该服务无法对客户端应用程序进行回调,并收到错误“发生安全包特定错误”。另外,如果我调整服务以明确要求Kerberos身份验证(而不是使用SNEGO/negotiate),则客户端甚至无法调用服务器(再次收到“发生安全包特定错误”)。在DCOM中使用Kerberos时需要SPN吗?
令人困惑的是,事情已经好几年没有问题。然而,与我们之前所做的相比,这里有一些不同之处。首先,涉及的服务器运行的是Windows 2008,这是我以前没有使用过的。另外,如上所述,错误只发生在从单独域中的帐户访问服务时,以前的用法从未尝试过。
现在的问题:我没有使用此DCOM服务的SPN(服务主体名称),但一些错误和事件日志使我认为这可能是问题。但是,我发现的所有文档都不清楚这是否正确,或者如果我确实需要它,我将如何设置SPN。 有谁知道SPN是我在这里失踪的吗?如果是这样,你能指出我应该怎么做?
其他细节:
对于将服务器设置为强制Kerberos身份验证,打开Extended RPC Debugging给出了一些更多的线索的情况。客户端可以使用CoCreateInstanceEx成功连接,但如上所述,服务接口上的调用失败。 RPC错误记录在位置140处显示错误,并且错误代码为0x80090303(“指定的目标未知或无法访问”),该记录的第三个参数为空字符串。这指出缺少SPN是罪魁祸首。
感谢您的信息。我以前曾尝试过Kerberos日志记录(以及其他一些我读过的日志),但从未能够解决问题。 – Charlie 2009-03-20 02:40:07