我使用 DCOM 在 Windows 网络上提供各种应用程序服务,使用 Kerberos 处理身份验证。系统通常工作正常,但我在从单独的(受信任的)域访问服务时遇到问题。特别是,该服务无法回调客户端应用程序,并收到错误“发生了安全包特定错误”。另外,如果我调整服务以明确要求 Kerberos 身份验证(而不是使用 SNEGO/negotiate),则客户端甚至无法调用服务器(再次收到“发生了安全包特定错误”)。
令人困惑的是,事情已经运行了很多年,没有出现任何问题。然而,与我们之前所做的相比,这里有一些不同之处。其一,所涉及的服务器运行的是Windows 2008,我以前没有使用过。此外,如上所述,仅当从单独域的帐户访问该服务时才会发生错误,并且以前的使用从未尝试过这样做。
现在问题是:我没有为此 DCOM 服务使用 SPN(服务主体名称),但一些错误和事件日志让我认为这可能是问题所在。然而,我发现的所有文档都不清楚这是否正确,或者如果我确实需要它,我将如何设置 SPN。 有人确切知道 SPN 是否是我所缺少的吗?如果是这样,您能指出我应该如何完成此操作吗?
其他详细信息:
对于服务器设置为强制Kerberos身份验证的场景,开启Extended RPC Debugging提供了一些额外的线索。客户端可以使用 CoCreateInstanceEx 成功连接,但对服务接口(interface)的调用失败,如上所述。 RPC 错误记录显示位置 140 处出现错误,错误代码为 0x80090303(“指定的目标未知或无法访问”),该记录的第三个参数是空字符串。这表明缺少 SPN 是罪魁祸首。
最佳答案
就其值(value)而言,Kerberos 根据定义需要 SPN。您也许可以利用内置的 SPNS (host/) 和主机暗示的各种风格(此别名翻译存储在 AD 中,但对于我来说,我似乎找不到列出其中的文章这是找到的)。
我首先查看跨域身份验证 - 使用 kerberos 可能会很棘手。我首先打开完整kerberos logging在客户端和服务器上,看看是否会出现任何结果。
关于windows - 将 Kerberos 与 DCOM 结合使用时是否需要 SPN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/504167/