微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – 为什么MS SQL Server使用NTLM身份验证?

Windows Server 2008 R2.

安装了sql Server 2008 R2.

MSsql服务作为本地系统运行.

服务器FQDN是sql01.domain.com.

sql01加入名为domain.com的Active Directory域.

以下是setspn的输出

C:\> setspn -L sql01
...
MSsqlSvc/sql01.domain.com:1433
MSsqlSvc/sql01.domain.com
WSMAN/sql01.domain.com
WSMAN/sql01
TERMSRV/sql01.domain.com
TERMSRV/sql01
RestrictedKrbHost/sql01    
RestrictedKrbHost/sql01.domain.com
HOST/sql01.domain.com
HOST/sql01

然后我启动sql Server Management studio并连接到sql01:

然后我运行以下查询

SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid

结果是NTLM.为什么结果不是Kerberos? SPN似乎对使用本地系统帐户是正确的.服务器不在群集中或使用CNAME.

解决方法

这是因为我从托管sql Server的同一台服务器本地连接到sql Server.当我从网络上的另一台计算机连接时,使用的身份验证机制是Kerberos,如预期的那样.

如果在本地连接,sql Server将始终使用NTLM. Kerberos仅在远程连接时使用.

来自SQL Server Protocols Blog的这篇帖子虽然陈述了同样的说法:

1) Kerberos is used when making remote connection over TCP/IP if SPN
presents.

2) Kerberos is used when making local tcp connection on XP if SPN
presents.

3) NTLM is used when making local connection on WIN 2K3.

4) NTLM is used over NP connection.

5) NTLM is used over TCP connection if not found SPN.

原文地址:https://www.jb51.cc/mssql/81239.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐