Docker. NET Базовое API-соединение с SQL Сервером через Kerberos - PullRequest
0 голосов
/ 20 февраля 2020

Кто-то успешно подключил Dockerized. NET Core API 2.2 с SQL Сервер, расположенный на внешнем клиентском облачном сервере через Kerberos?

Здесь мы сталкиваемся с этими проблемами:

Сценарий 1: Если мы используем строку подключения, подобную этой:

Server = tcp: SERVER_IP_ADDRESS, 1433; Database = DB_NAME; Идентификатор пользователя = USER; Пароль = ПАРОЛЬ;

тогда, это занимает много времени и выдает исключение следующим образом:

SqlException: соединение с сервером было успешно установлено, но затем ошибка произошла во время входа в систему. (поставщик: поставщик TCP, ошибка: 0 - успех)

Сценарий 2: Если мы используем строку подключения, подобную этой:

Server = tcp: SERVER_IP_ADDRESS, 1433; Database = DB_NAME; Идентификатор пользователя = USER; Password = PASSWORD; Trusted_Connection = True ;

затем исключение:

SqlException: Невозможно выполнить аутентификацию с использованием Kerberos. Убедитесь, что Kerberos был инициализирован на клиенте с помощью «kinit», а имя участника службы было зарегистрировано для сервера SQL, чтобы разрешить аутентификацию Kerberos. ErrorCode = InternalError, Exception = Interop + NetSecurityNative + GssApiException: операция GSSAPI завершилась ошибкой - ошибка GSS не указана. Незначительный код может предоставить больше информации (SPNE GO не может найти механизмы для переговоров).

Итак, наши руки связаны, и мы не знаем, куда бежать.

Может ты нам помогаешь?

Спасибо заранее.

1 Ответ

0 голосов
/ 20 февраля 2020

Если вам не нужен строго Kerberos для аутентификации, просто используйте sql user nad password.

Чтобы сделать это, создайте пользователя только на сервере sql (не в windows, используйте ssms сделать это или sql скрипт) и использовать этого пользователя, а не windows.

Кажется, что вы не используете sql аутентификацию сервера, по крайней мере, вы не используете sql пользователь сервера, но сервер windows one и sql пытается аутентифицировать этого пользователя в AD, вместо этого аутентифицируя его локально на sql сервере.

Однако, если вы хотите использовать Windows auth, вы, вероятно, потребуется использовать windows контейнеры и учетные записи gMSA, см. https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/gmsa-run-container

...