2010-08-23 2 views
0

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

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

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

ответ

0

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

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

Для моей установки (Windows Server 2003, IIS 6, PHP 5.2.6, SQL Server 2005 Enterprise ) ключ к получению успешным соединение с использованием 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) Создал логин для службы NT AUTHORITY \ NETWORK SERVICE и дал ему соответствующие разрешения для моей базы данных.

7) Rebooted сервер

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

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

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

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

Смежные вопросы