Вы, кажется, не устанавливаете SPN. См.
Имя участника службы (SPN) - это имя, по которому клиент однозначно идентифицирует экземпляр службы.
Вы можете указать SPN, используя свойство соединения serverSpn, или просто позвольте драйверу собрать его для вас (по умолчанию). Это свойство имеет вид: «MSSQLSvc / fqdn:port@REALM», где fqdn - полное доменное имя, порт - номер порта, а REALM - область Kerberos сервера SQL заглавными буквами. Часть области этого свойства является необязательной, если область вашей конфигурации Kerberos по умолчанию совпадает с областью сервера и не включена по умолчанию. Если вы хотите sh поддерживать сценарий межобластной аутентификации, в котором область по умолчанию в конфигурации Kerberos отличается от области сервера, то вы должны установить имя участника-службы со свойством serverSpn.
Например, ваше имя участника-службы может выглядеть так: «MSSQLSvc / some-server.zzz.corp.contoso. com:1433@ZZZZ.CORP.CONTOSO.COM»
Использование встроенной аутентификации Kerberos для подключения к SQL Серверу - участник службы names .
Драйвер попытается создать SPN для вас из других атрибутов соединения, но вместо FQDN у вас есть IP-адрес, поэтому он не может создать правильный SPN. В конфигурации по умолчанию SQL Сервер регистрирует свои собственные имена участников-служб, и вы можете увидеть правильное имя участника-службы в журнале SQL Сервера, но есть сценарий ios, где дополнительные имена участников-служб должны быть зарегистрированы для учетной записи службы, и вам потребуется используйте команду setspn
на Windows, чтобы увидеть их.
Предполагая, что ваш SQL Сервер прослушивает порт 1234, и вы не изменили учетную запись службы для экземпляра SQL Server по умолчанию, тогда имена SPN должны быть зарегистрированы для доступа к машине, и операторы setspn
должны быть:
setspn –A MSSQLSvc/SERVER_01.devdc.local devdc\SERVER_01$
setspn –A MSSQLSvc/SERVER_01.devdc.local:1234 devdc\SERVER_01$
, если вы настроили учетную запись домена в качестве учетной записи службы, скажем devdc\sqlsvc
, а затем замените ее.
setspn –A MSSQLSvc/SERVER_01.devdc.local devdc\sqlsvc
setspn –A MSSQLSvc/SERVER_01.devdc.local:1234 devdc\sqlsvc
TL / DR использует полное доменное имя (FQDN) сервера SQL для setServerName () вместо IP-адреса. Если это не сработает, вам нужно будет спросить сотрудников службы безопасности сети, какие имена SPN зарегистрированы для учетной записи службы SQL. Если вы отказываетесь от Kerberos, вернитесь к NTLM.
Также в более новом драйвере JDB C Microsoft реализовала NTLM, который является прочим Windows протоколом аутентификации .
Но учтите следующее предостережение о безопасности:
Протокол NTLM - это старый протокол аутентификации с различными уязвимостями, которые представляют угрозу безопасности. Он основан на относительно слабой схеме шифрования c и уязвим для различных атак. Он заменен на Kerberos, который намного безопаснее и рекомендуется. Аутентификация NTLM должна использоваться только в безопасной доверенной среде или когда Kerberos не может использоваться.
Драйвер Microsoft JDB C для SQL Сервер поддерживает только NTLM v2, который имеет некоторые улучшения безопасности по сравнению с оригинальным протоколом v1. Также рекомендуется включить расширенную защиту или использовать шифрование SSL для повышения безопасности.
Использование аутентификации NTLM для подключения к SQL Серверу - риски безопасности