标签: spn

目标主体名称不正确.无法生成SSPI上下文

我正在努力获得从机器A到运行SQL Server的机器B的SQL Server连接.

我已经广泛搜索了所有我发现的东西都没有用.他们也没有引导你逐步解决这个问题.

我们不使用Kerberos,而是使用配置的NTLM.

在此输入图像描述

涉及的机器是(xx用于隐藏某些机器名称以用于安全目的):

  • xxPRODSVR001 - Windows Server 2012域控制器
  • xxDEVSVR003 - Windows Server 2012(此机器正在生成错误)
  • xxDEVSVR002 - Windows Server 2012(此计算机正在运行SQL Server 2012)

以下SPN已在DC(xxPRODSVR001)上注册.出于安全考虑,我用yyy模糊了域名:

已注册的ServicePrincipalNames为CN = xxDEVSVR002,CN = Computers,DC = yyy,DC = local:

            MSSQLSvc/xxDEVSVR002.yyy.local:49298

            MSSQLSvc/xxDEVSVR002.yyy.local:TFS

            RestrictedKrbHost/xxDEVSVR002

            RestrictedKrbHost/xxDEVSVR002.yyy.local

            Hyper-V Replica Service/xxDEVSVR002

            Hyper-V Replica Service/xxDEVSVR002.yyy.local

            Microsoft Virtual System Migration Service/xxDEVSVR002

            Microsoft Virtual System Migration Service/xxDEVSVR002.yyy.local

            Microsoft Virtual Console Service/xxDEVSVR002

            Microsoft Virtual Console Service/xxDEVSVR002.yyy.local

            SMTPSVC/xxDEVSVR002

            SMTPSVC/xxDEVSVR002.yyy.local

            WSMAN/xxDEVSVR002

            WSMAN/xxDEVSVR002.yyy.local

            Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/xxDEVSVR002.yyy.local

            TERMSRV/xxDEVSVR002

            TERMSRV/xxDEVSVR002.yyy.local

            HOST/xxDEVSVR002

            HOST/xxDEVSVR002.yyy.local
Run Code Online (Sandbox Code Playgroud)

已注册的ServicePrincipalNames为CN = xxDEVSVR003,CN = Computers,DC = yyy,DC = local:

            MSSQLSvc/xxDEVSVR003.yyy.local:1433 …
Run Code Online (Sandbox Code Playgroud)

sql-server tfs spn kerberos sspi

56
推荐指数
15
解决办法
18万
查看次数

SQL Server网络接口库无法注销服务主体名称(SPN)

我已经设置了一个具有读取和写入服务主体名称权限的SQL Server服务帐户。当SQL Server启动时,我在日志中收到预期的消息,表明该服务帐户已成功注册了SPN:

SQL Server网络接口库已成功为SQL Server服务注册了服务主体名称(SPN)[MySPN]。

与数据库服务器的连接按预期使用Kerberos身份验证,并且一切正常。

但是,当我关闭SQL Server时,会在日志中输入一条消息,表明无法注销SPN:

SQL Server网络接口库无法注销SQL Server服务的服务主体名称(SPN)[MySPN]。错误:0x6d3,状态:4.管理员应手动注销此SPN,以避免客户端身份验证错误。

我检查了是否没有重复的SPN,并检查了SPN是否已注册到正确的服务帐户,并且仅注册到了该帐户。服务器已重新启动几次。Microsoft的Kerberos Config Manager不提供任何见解。

我不明白为什么允许该服务帐户创建SPN但不允许删除它。

sql-server spn kerberos sql-server-2014

11
推荐指数
1
解决办法
377
查看次数

Kerberos:UPN和SPN之间的区别

我现在正在使用GSSAPI来破解跨平台应用程序.虽然我不清楚UPN和SPN之间的区别.

开发环境是CentOS 6.4上的Samba4 AD DC服务器,Windows服务器2008 R2是域中的成员盒,例如EXAMPLE.COM(您可能很好奇为什么不直接使用Win2008作为DC.正如我之前所说,应用程序是跨平台的,我现在正在测试这个设置.正常的Win DC-Linux MEM设置工作正常.).我创建了一个新用户foobar:users来运行该应用程序.当我使用foobar@EXAMPLE.COMUPN来验证针对Kerberos的应用程序时,我一直在接收

Kerberos:Principal可能不会充当服务器错误

在Samba maillist上的一个帖子之后,我想我应该app/dc.example.com为UPN 创建一个服务主体名称samba-tool

samba-tool spn add app/dc.example.com foobar
Run Code Online (Sandbox Code Playgroud)

这次我会收到另一个错误

Samba4 KDC - 在hdb中找不到这样的条目

我的问题是UPN和SPN之间有什么区别?通过samba-tool spn list foobar,它说foobar 具有 servicePrincipalName app/dc.example.com.我怎么能将UPN与SPN联系起来?

非常感谢你.

samba spn kerberos gssapi

7
推荐指数
1
解决办法
1万
查看次数

我需要为net.tcp服务设置什么SPN?

我有一个运行本地Windows帐户的Windows服务托管的wcf应用程序.我是否需要为此帐户设置SPN?如果是这样,SPN需要设置的协议是什么?我知道如何通过HTTP为服务做这个,但从来没有为net.tcp做过.

security wcf spn

6
推荐指数
2
解决办法
5488
查看次数

在NetNamedPipe服务端点的endpointaddress上设置SPN

我正在收到"没有端点监听net.pipe:// localhost"错误,如其他地方所述,但我似乎无法找到真正的答案.

这是问题的一个很好的标识:http: //kennyw.com/indigo/102

使用WCF时,Windows身份验证是通过SSPI-Negotiate执行的,在大多数情况下,它将选择Kerberos作为实际的身份验证机制.但是,如果传递给SSPI的目标SPN是本地计算机帐户的格式良好的SPN(例如主机/ [dns机器名称]),那么Negotiate将使用NTLM(环回优化),并且访问令牌将不具有网络SID(和因此可以与NetNamedPipes一起使用).

但它并没有告诉我如何解决这个问题.我以编程方式创建我的端点.

var binding = new NetNamedPipeBinding();
binding.Security.Mode = NetNamedPipeSecurityMode.Transport;
binding.Security.Transport.ProtectionLevel = ProtectionLevel.EncryptAndSign;

var id = EndpointIdentity.CreateSpnIdentity("host/" + Environment.MachineName);
var endpointAddress = new EndpointAddress(new Uri(serviceClientUrl), id);

var client = new ServiceClient(binding, endpointAddress);
Run Code Online (Sandbox Code Playgroud)

我猜我的问题出在CreateSpnIdentity中,但我不确定要使用什么值.

附加信息: 详细说明这一点以获取更多背景信息.Wcf服务作为在NetworkService帐户下运行的Windows服务托管(我尝试过本地系统).使用默认的NetNamedPipeBinding构造函数创建服务:

host.AddServiceEndpoint(typeof(IService), new NetNamedPipeBinding(), "ServiceName");
Run Code Online (Sandbox Code Playgroud)

我创建了一个使用此服务的SharePoint Webpart.问题是,如果SharePoint站点设置为基于表单的身份验证,或者只是在Windows身份验证下的URL中使用了计算机名称,那么就没有问题.当在Windows身份验证下将完全限定的计算机名用于URL时才会出现上述错误.

我很确定这与文章中描述的NTLM Kerberos问题有关,但我不确定如何绕过它.

wcf spn netnamedpipebinding

6
推荐指数
1
解决办法
1724
查看次数

指定SPN的正确格式是什么?

首先,使用setspn命令为用户注册服务主体名称。

setspn -a CS/dummy@abc.com虚拟用户

setspn -l虚拟用户

给出输出为

CS/dummy@abc.com

接下来,当使用/ mapUser选项执行ktpass命令时,将修改用户帐户的服务主体名称,以便删除域组件。

ktpass / pass Password @ 123 -out dummy.1.keytab -princ CS/dummy@abc.com -crypto DES-CBC-MD5 + DumpSalt -ptype KRB5_NT_PRINCIPAL + desOnly / mapOp set / mapUser dummyuser

setspn -l虚拟用户

给出输出为

CS /虚拟

以下两个命令是否正确并且以相同的方式工作?

setspn -a CS /虚拟虚拟用户

setspn -a CS/dummy@abc.com虚拟用户

在SPN中指定服务名称时,是否也必须包含域组件?你能澄清一下吗?

spn kerberos keytab

6
推荐指数
1
解决办法
683
查看次数

我无法通过我的ansible主机验证AD到Windows机器.在Ubuntu 16.10上的"Kerberos数据库中找不到服务器"

我无法通过我的ansible主机验证AD到Windows机器.我有一张有效的kerberos票 -

klist
Credentials cache: FILE:/tmp/krb5cc_1000
        Principal: ansible@SOMEDOMAIN.LOCAL

  Issued                Expires               Principal
Mar 10 09:15:27 2017  Mar 10 19:15:24 2017  krbtgt/SOMEDOMAIN.LOCAL@SOMEDOMAIN.LOCAL
Run Code Online (Sandbox Code Playgroud)

我的kerberos配置对我来说很好看 -

cat /etc/krb5.conf
[libdefaults]
        default_realm = SOMEDOMAIN.LOCAL
#       dns_lookup_realm = true
#       dns_lookup_kdc = true
#       ticket_lifetime = 24h
#       renew_lifetime = 7d
#       forwardable = true

# The following krb5.conf variables are only for MIT Kerberos.
#       kdc_timesync = 1
#       forwardable = true
#       proxiable = true

# The following encryption type specification will be used by …
Run Code Online (Sandbox Code Playgroud)

authentication spn kerberos active-directory ansible

6
推荐指数
1
解决办法
3402
查看次数

在哪里运行setspn命令?

我正在尝试使用以下命令添加服务主体名称,该命令用于Windows身份验证。

setspn –a HTTP/Kerberos.com domain\username
Run Code Online (Sandbox Code Playgroud)

我有一个在IIS服务器上运行的站点,该站点在连接到域控制器计算机的Windows 2008服务器上运行。

我是否必须setspn在IIS服务器或域控制器上运行命令?

spn kerberos windows-authentication domaincontroller

5
推荐指数
1
解决办法
2254
查看次数

安装SharePoint时如何使用此SetSPN命令

在SharePoint安装文档中,我说它,

如果对SQL Server服务帐户使用域用户帐户,则必须确保其环境中存在该帐户的有效服务主体名称(SPN)和数据库服务器上的SQL Server实例.无论您是否对Office SharePoint Server 2007使用NTLM或Kerberos身份验证,情况都是如此.

您必须使用Setspn.exe命令行工具在域中为该帐户配置SPN.默认情况下,在运行Windows Server 2008的计算机上安装Setspn.exe.在与用户/服务帐户加入同一域的计算机上运行以下命令.

setspn -a <http/<farmclusterdnsname> <serviceaccountname>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,参数应该是什么?

我想serviceaccountname将是'domain\username',但不确定第一个参数应该是什么.

这是SetSPNtechnet链接.

sharepoint spn

3
推荐指数
1
解决办法
3万
查看次数

了解Kerberos主体

我试图了解Kerberos的基本概念.我在这里读到了关于这里的原理,通常看起来像:

primary/instance@REALM
Run Code Online (Sandbox Code Playgroud)

我想问一下什么是主要的,实例和领域.当然,上面的页面和互联网上的其他几个地方都有定义,但有人可以举个例子吗?

我的理解是:主要是消费者(用户或服务).实例是用于访问控制的东西.主要可以是多个实例的一部分.Realm是实例的集合?如果我错了,请纠正我.

如果我有一台服务器:foo.bar.com
,我可以拥有2个领域:REALM1,REALM2.这些可以这样命名吗?或者我可以在这里只有1个领域作为FOO.BAR.COM
现在我说3个服务:s1,s2,s3相互通信.由于启用了kerberos,它们中的每一个都必须拥有一个带有自己的keytab文件的主体?或者由于每个服务都与其他服务进行通信,每个keytab文件是否需要为其他服务都有主体?

authentication spn kerberos keytab mit-kerberos

1
推荐指数
1
解决办法
259
查看次数