我在两台服务器之间设置服务代理。我正在实现的环境没有域。
两个SQL服务器服务在“NETWORK SERVICE”下运行
我收到以下错误消息
用户'NT AUTHORITY \ ANONYMOUS LOGON'的Service Broker登录尝试。失败并显示错误:'连接握手失败。登录'NT AUTHORITY \ ANONYMOUS LOGON'在端点上没有CONNECT权限。国家84.'。
如果我将NT AUTHORITY \ ANONYMOUS LOGON添加到SQL服务器并授予连接权限,那么一切正常。
我不确定是否允许NT AUTHORITY \ ANONYMOUS LOGON是一个好主意。
谷歌的一些研究告诉我,我需要为Kerberos配置SPN,但我不知道这样做。
你可以帮忙,或者指点一篇好文章来推荐吗?
组态
SQL 2008 R2和Windows 2008
我在两台服务器之间设置服务代理。我正在实现的环境没有域。
那么您应该使用基于证书的身份验证而不是Windows:
CREATE ENDPOINT [broker]
STATE = STARTED
AS TCP (LISTENER_PORT = 4022)
FOR SERVICE_BROKER (
AUTHENTICATION = CERTIFICATE [MyCertName]);
设置非常复杂,因为它涉及在主机之间交换证书,创建登录和用户以映射到其他主机并授予端点连接。然后,您还需要执行对话安全层。你可以在这里阅读How does Certificate based Authentication work,这个博客一步一步地解释了如何做到这一点:A simple secure dialog with transport certificates。
请注意,即使错误消息是关于匿名登录,这也不是Kerberos的“双跳”问题(更好地称为约束委派)。