Программное управление доступом на PHP-сайте, размещенном на IIS с использованием Active Directory? - PullRequest
1 голос
/ 02 апреля 2019

Справочная информация:

У меня есть веб-сайт на основе PHP на IIS8 с интеграцией Active Directory, где мне необходимо обеспечить разные уровни контроля доступа.Например:

Customer Service
- View Transactions
- View Customers
Finance
- Edit Transactions
- View Transactions
- View Customers

В настоящее время мы используем интеграцию AD IIS для управления входом в защищенные части сайта, но не можем разделять права (например, пример выше) по группам.

Вопрос:

Есть ли способ (через PHP) использовать AD для более чем простого входа, где я могу определить, в какой группе AD находится человек, такЯ могу программно основывать создание моей страницы на их группе?

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Оказывается, чтобы удовлетворить мои потребности в одном механизме входа в систему, без отдельных учетных записей поиска, разных прав группы и т. Д., Это действительно просто и совсем не требует LDAP.

  • Отключить «анонимную аутентификацию» для сайта в IIS.
  • Включите проверку подлинности Windows для сайта в IIS.
  • Создание подпапок веб-сайта, которые представляют каждую группу.
  • Поместите один файл (пустой или байтовый) в каждую папку.
  • Удалите ВСЕ права доступа Windows AD (кроме ваших программистов / администраторов). Это включает IUSR - удалите это также - к подпапке.
  • Добавление прав доступа к папкам по группам.
  • Напишите небольшой кусочек PHP, который проверяет существование «[GroupNameFolder] /PermFile.txt» (или как вы его называете).

Это буквально так. Нет библиотек LDAP, нет вызовов LDAP. IIS позаботится обо всем этом.

Если файл существует, он находится в группе AD, которую представляет папка. Если это не так, то их нет в группе. Затем программно, если я получил «существует» на «Финансы» (например, пример моего вопроса), я разрешаю им доступ «Редактировать транзакции».

НЕДОСТАТКИ:

Это НЕ кроссплатформенный сейф (хотя методы могут быть легко адаптированы к другим платформам).

0 голосов
/ 02 апреля 2019

Это зависит. Ваш сайт использует NTLM или проверяет учетные данные AD путем прямого запроса на сервер AD? В первом случае (NTLM) веб-сайт получает только несколько данных об учетной записи (имя samaccount, домен), поэтому он ничего не знает о настраиваемых полях в AD, которые могут содержать данные о разрешениях, и вам необходимо контролировать права доступа на своем веб-сайте, может быть, вы Можно написать какой-нибудь инструмент синхронизации, который будет экспортировать доступ из AD и поместить его в базу данных вашего сайта. Во втором случае ваш сайт имеет доступ пользователя к AD и, вероятно, (в зависимости от настроек AD) может прочитать некоторые поля доступа в AD. Мой ответ основан на моем опыте написания AD auth на php-сайте, работающем под nginx / linux, ситуация может быть другой в php-среде на основе IIS.

...