Как подключиться из приложения ASP.NET Core, работающего в контейнере, к SQL Server на Windows Server с интегрированной безопасностью - PullRequest
1 голос
/ 19 сентября 2019

У меня есть приложение ASP.NET Core с бэкэндом, использующим Microsoft SQL Server, работающий на Windows Server.Это приложение уже работало на виртуальной машине Windows, и мы переходим к запуску его в контейнере в OpenShift.

Приложение подключается к SQL Server с использованием встроенной защиты с использованием учетной записи службы Active Directory.Если я введу имя пользователя и пароль в строке подключения, это будет работать?

Я также нашел эту статью об использовании Kerberos для настройки (https://www.codeproject.com/Articles/1272546/Authenticate-NET-Core-Client-of-SQL-Server-with-In),, но я не уверен, что это отличный шаблон. Я был бы признателен за любую помощь.

РЕДАКТИРОВАТЬ: Извинитеза неясность - это контейнер Linux.

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Так что я думаю, что в основном понял это и просто хотел поделиться тем, что нашел.В .NET Core 2.x возможно иметь приложение в контейнере Linux, которое взаимодействует с Microsoft SQL Server с интегрированной безопасностью, но для этого требуется некоторая конфигурация Kerberos и даже более того, сопутствующая программа, выполняющая скрипт для регулярного обновления обоихбилеты Kerberos и файлы keytab.Я не большой поклонник этой реализации, но это обсуждается в ссылке в моем первоначальном вопросе.Тем не менее, похоже, что в .NET Core 3.0 ожидается встроенная поддержка.Так что я могу отложить эту миграцию до выхода 3.0, чтобы облегчить себе задачу.Целое обсуждение вокруг этого задокументировано гораздо лучше, чем я мог бы выразить здесь: https://github.com/aspnet/AspNetCore/issues/4662

Спасибо всем, кто прокомментировал - я ценю ваш вклад.

РЕДАКТИРОВАТЬ: .NET Core 3.0вне!Внедрение аутентификации Windows можно найти здесь: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-3.0&tabs=visual-studio

0 голосов
/ 20 сентября 2019

Если вы используете контейнер Windows, как я и предполагал, текущий пользователь не тот, кого вы ожидаете.Когда вы запустите контейнер, если вы не добавили пользователей в этот конкретный контейнер, вы обнаружите, что пользователь является «пользователем контейнера», созданным для этой цели.Следовательно, соединение с Integrated Security не будет работать.

Подключитесь к контейнеру в оболочке и проверьте себя:

docker exec -it [yourrunningcontainer] cmd

C:\somefolder\echo %username%

Выводит "ContainerUser"

Этоможно создавать пользователей внутри контейнера, но наверняка они не будут принадлежать вашей Active Directory, и, искренне, я не вижу простого способа установить множество вещей, чтобы подделать его из контейнера (ваш пользователь в контексте ADне просто «подделать», на самом деле, очень сложно, и я не знаю метод, который не очень большой взлом для этого)

Есть способ связаться с другим пользователем, но вы будетеобращаться к пользователю контейнера по id.Опять же, не существует простого способа выдать себя за пользователя Active Directory, который, я полагаю, это то, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...