Мне нужно подключиться к Sql Server 2008, используя аутентификацию Windows из кода PHP, передавая имя пользователя и пароль, как мы делаем, когда мы подключаемся к Sql Server с аутентификацией SQL.Мне нужно аутентифицировать пользователя на основе имени / пароля аутентификации Windows.
Когда я использовал аутентификацию SQL, я смог подключиться, создав системный DSN с именем DBconnect
в инструменте настройки источника данных (ODBC).Тогда я мог бы успешно проверить идентификатор входа с помощью проверки подлинности SQL Server и подключиться к базе данных, используя идентификатор входа и пароль, введенные пользователем с таким кодом php:
$con = odbc_connect("DBconnect", "sql_user", "sql_password");
Теперь мне нужно сделать то же самое, когда SQLСервер использует проверку подлинности Windows.Я хочу создать системный DSN с именем DBConnect_NT
в инструменте настройки источника данных (ODBC) и настроить его для проверки подлинности идентификатора входа с помощью аутентификации Windows с использованием идентификатора входа в сеть.
У меня есть этот код:
$con = odbc_connect("DBconnect_NT", "windows_user", "windows_pass");
Но это не работает.Я получаю эту ошибку:
Ошибка при подготовке / выполнении запроса.28000
Я изменил некоторые настройки в разделе «Проверка подлинности» IIS7 Manager
Windows Authentication = Enabled
Anonymous Authentication = Disabled
Теперь я могу использовать этот код:
$con = odbc_connect("DBconnect_NT", "", "");
и вижувсплывающее окно, предлагающее мне войти.Когда я набираю имя пользователя и пароль, он подключается и, следовательно, позволяет мне выполнять другие запросы, используя тот же $con
объект подключения.
К сожалению, я не могу аутентифицировать пользователя для веб-сайта на основе этого подхода,Когда я ввожу неправильное имя пользователя и пароль во всплывающем окне, оно не дает ответа (всплывающее окно появляется снова).Если я отменю всплывающее окно, появится сообщение об ошибке 401:
401 - неавторизовано: доступ запрещен из-за неверных учетных данных.
Использую ли я правильный способ подключенияк SQL Server через проверку подлинности Windows?Есть ли другой возможный способ подключения к SQL Server путем динамической передачи имени пользователя и пароля для проверки подлинности Windows?
Я также пытался использовать LDAP для проверки подлинности в Active Directory, но он не работает.
IЯ использую SQL SERVER 2008, IIS7 и PHP5.3 на машине Amazon EC2.
Это гибкое приложение, которое я создаю с использованием http://example.net/Webservice/connect.php
.Flex динамически передает имя пользователя / пароль в это всплывающее окно из формы и, следовательно, подключается.Но когда введено неправильное имя пользователя / пароль, всплывающее окно трудно обрабатывать.Он возвращается постоянно, и приложение flex зависает.
Если возможно получить код ошибки, когда во всплывающем окне введено неправильное имя пользователя / пароль, это может решить проблему.Другой способ подключения SQL Server с использованием аутентификации Windows и прямой передачи имени пользователя и пароля также решил бы мою проблему.