CakePHP SQL Server Проверка подлинности Windows - PullRequest
0 голосов
/ 23 августа 2010

CakePHP подключается к базе данных SQL Server с использованием стандартной аутентификации SQL Server.Если я хочу подключиться через проверку подлинности Windows, кто-нибудь пробовал это сделать?

Во-первых, я думаю, что требуется использование драйверов SQL Server , т.е. не стандартных драйверов MSSQL PHP, чтобы сам PHP мог использовать WindowsАутентификация.Затем возникает проблема замены всех мест в CakePHP, где предполагается, что он использует файл конфигурации /app/core/database.php.

Кто-нибудь пробовал либо использовать драйверы SQL Server с CakePHP, либо еще лучше, пробовалПроверка подлинности Windows?Или, может быть, это просто не стоит хлопот.

1 Ответ

0 голосов
/ 24 августа 2010

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

Основной PHP-сайт имеет хорошее объяснение в комментариях:

Для моей установки (Windows Server 2003, IIS 6, PHP 5.2.6, SQL Server 2005 Предприятие) ключ к получению успешного соединения с помощью mssql_connect переводил PHP из режима ISAPI в режим FastCGI.

1) Я скачал и установил FastCGI для IIS 6 от Microsoft http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1521

2) Я изменил мою установку PHP, чтобы он работал в режиме FastCGI.

3) Открыт fcgiext.ini и добавил это до конца.

[Types] php=PHP

[PHP] ExePath=c:\PHP\php-cgi.exe InstanceMaxRequests=10000 EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000

4) Я добавил cgi.force_redirect=0 к «; Тайм-аут по умолчанию для секция потоков на основе сокетов (секунд) »в PHP.ini

5) Я убедился моя база данных SQL была установлена ​​в режим аутентификации Windows, и я также * включил mssql.secure_connection в php.ini.

6) Создано SQL логин для NT AUTHORITY \ NETWORK SERVICE и дал ему соответствующий разрешения на мою базу данных.

7) перезагрузил сервер

Затем я добавил IUSR (учетную запись домена IIS) в качестве имени входа на SQL Server и пользователя {mydatabase_iis} с разрешениями db_readers и db_writer, и это действительно сработало.

Шаги для воссоздания:

  1. В C: \ Program Files \ PHP \ php.ini измените эту строку (т.е. включите NT-аутентификацию): mssql.secure_connection = Вкл.
  2. Перезагрузите IIS
  3. В SQL Server Management Studio Express
  4. Перейти к безопасности | Логины (правый клик) | Добавить новый логин ...
  5. Нажмите Поиск рядом с полем ввода Логин
  6. Введите IUSR и нажмите Проверить имя (следует подчеркнуть слово - см. Скриншот)
  7. Нажмите OK
  8. Оставьте аутентификацию Windows выбранной и нажмите OK
  9. Перейти к базам данных | {MyDatabase} | Безопасность | Пользователи (правый клик) | Новый пользователь ...
  10. Имя пользователя {mydatabase_iis}
  11. Войти - нажмите «...» и найдите IUSR Login
  12. Для ролей в Базе данных отметьте db_datareader и db_datawriter, и эй presto, в котором мы находимся (или, по крайней мере, я был)

Кажется, что CakePHP весьма рад использовать файл database.php для имени базы данных, и я предполагаю, что SQL Server просто игнорирует имя пользователя и пароль и использует аутентификацию Windows.

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