Классическая встроенная безопасность ASP в строке подключения - PullRequest
2 голосов
/ 29 февраля 2012

У меня есть старое классическое приложение ASP (не asp.net), которое мне нужно настроить для использования Microsoft SQL Server 2008. Оно хорошо работает со следующей строкой конфигурации:

SERVER=myServer;DRIVER=SQL SERVER;DATABASE=myDatabase;UID=sa;PWD=somepass

Но мне нужно использовать интегрированныйбезопасность.Но получил ошибку в любых типах объявлений, которые я пытался.Нечто подобное и множество вариантов не работают:

SERVER=myServer;DRIVER=SQL SERVER;DATABASE=myDatabase;Integrated Security=SSPI;

Поэтому мой вопрос: как должна выглядеть строка соединения для интегрированной безопасности Classic ASP.Или может быть необходима дополнительная настройка веб-сервера?

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

Обратите внимание, что это повлияет на SQL на основе аутентификации вашего пула приложений asp, при условии, что вы используете анонимную аутентификацию.

Я вижу, вы добавили комментарий, отметив IIS 5, настроить сайт для использования аутентификации Windows на ISS5 можно, перейдя в свойства своего сайта, выбрав вкладку "Безопасность каталога", а затем нажав кнопку "Изменить" раздел «Анонимный доступ и контроль аутентификации». Отключите анонимную проверку подлинности и установите флажок «Интегрированная безопасность Windows».

(ПРИМЕЧАНИЕ: веб-сервер должен иметь возможность аутентифицировать учетные данные, поэтому вы можете столкнуться с проблемами NTLM и kerberos в зависимости от конфигурации вашего домена - действуйте осторожно!)

Это должно выполнить asp-файлы как аутентифицированный пользователь, и в этом случае ваши строки подключения смогут использовать доверенные соединения.

У вас есть несколько вариантов выбора в зависимости от того, какие поставщики у вас есть.

Например, с помощью поставщика OLE DB для собственного клиента SQL Server 9.0 вы можете использовать:

Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;

Native Client 10 немного отличается:

Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;

Я предпочитаю поставщика SQLOLEDB (у меня были проблемы с драйвером SQL SERVER и VARCHAR (MAX) в прошлом):

Provider=SQLOLEDB;Data Source=Your_Server_Name;Initial Catalog=myDataBase;Integrated Security=SSPI;

ПРИМЕЧАНИЕ: внезапное изменение аутентификации может сломать другие вещи - я бы просто рекомендовал добавить учетные данные SQL на SQL-сервере и использовать их вместо этого в строках подключения.

2 голосов
/ 01 марта 2012

Жаль, что вы не ответили на мой запрос в комментарии к вашему вопросу, поэтому мне придется дать более широкий ответ.(Хотя HeavenCore фактически дал вам правильную строку подключения для использования, SQLOLEDB).

При использовании анонимного доступа

Когда вы запускаете сайт Classic ASP под анонимнымполучить доступ к токену безопасности, что поток, выполняющий сценарий, принадлежит анонимному пользователю IIS.Этот пользователь по умолчанию в IIS5.1 является пользователем локальной машины.В результате, если SQL-сервер также не работает в том же окне, вы не можете использовать этого пользователя для предоставления доступа к SQL-серверу.

Вам потребуется создать нового пользователя в своем домене, который будет действовать каканонимный аккаунт.Затем вы измените анонимного пользователя вашего приложения на эту новую учетную запись.На сервере SQL вы можете предоставить соответствующий доступ к базе данных этой учетной записи.

Если я правильно помню, вы можете настроить учетную запись анонимного пользователя, открыв свойства сайта.На вкладке «Безопасность каталога» нажмите «Изменить» в разделе «Аутентификация и контроль доступа».В появившемся диалоговом окне методов аутентификации вы можете изменить анонимную учетную запись на учетную запись, являющуюся членом домена.

При использовании интегрированного доступа Windows

Если вы используете классическую версиюASP не имеет анонимного доступа, но вместо этого выполняет аутентификацию соединений с использованием встроенной защиты окна, тогда каждый сценарий будет выполняться с использованием маркера безопасности аутентифицированного пользователя.Следовательно, когда SSPI используется в соединении SQL, используется пользователь, связанный с соединением, по которому поступил запрос.

Чтобы предоставить этим пользователям доступ к базе данных SQL, вам потребуется создать соответствующие группы AD и предоставитьэти группы получают доступ к БД.Затем назначьте пользователей этим группам.

Недостатком этого подхода является то, что он получает ограниченную выгоду от кэширования соединений, однако, учитывая остальную часть вашей конфигурации, это может не вызывать особых проблем.

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