Аутентификация/авторизация в админке сайта через пользователей Unix?
Собственно закралась идея в голове такая. Давать доступ в адмику сайта на основе информации о пользователе в группе на сервере (unix users, unix groups)
Смысл такой:
1. Пользователь вводит в формочку логин и пароль. После чего данные сверяются с теми, что заведены на сервере (например, через PAM). Если пользователь найден и пароль подходит, то идём на следующий шаг.
2. Проверяем, что пользователь находится в какой-либо мастер-группе, например "appadmin". Если он в ней находится, то ...
3. Возвращаем список групп с префиксом, в которые входит пользователь. (appadmin-users, appadmin-logs, appadmin-articles).
4. В приложении уже в модулях проверяем нахождение юзера в нужной группе.
Что это даёт? Избавляемся от необходимости для аутентификации/авторизации пользователей в адмике использовать БД, просто создаём пользователя на сервере юзера, добавляем его в нужные группы и дело в шляпе.
Да, можно поставить LDAP, но... с пользователями Unix нет необходимости ставить и настраивать дополнительный относительно тяжёлый софт.
Теперь вопрос, прежде, чем я написал под всё это код. Насколько это больная идея и есть ли смысл её реализовывать?
P.S. Естественно, пользователи создаются без домиков с шеллом /bin/false.
1) В большинстве БД и так есть
2) Создавать пользователей удобнее в БД
3) При более детальном разграничении прав доступа всё равно нужно будет использовать какое-то хранилище
4) Завязка на ОС
Как по мне преимущества весьма сомнительны
1) В большинстве БД и так есть.
Для данного приложения нет необходимости в БД, при этом самих БД может быть несколько.
2) "INSERT INTO ..." vs. "adduser / useradd -G". Как-то не факт, что есть больше удобства при использовании БД.
3) Наличие пользователя в группе разве не достаточно детально для админки сайта?
4) PAM-авторизация есть на всех POSIX-совместимых системах. На пользователей Windows-серверов мне плевать так же, как Windows-разработчикам плевать на Linux-пользователей.
Денис Сафронов: Если у вас такая ситуация - почему бы и нет, всё ведь зависит от контекста. Как по мне INSERT INTO проще вызвать из кода чем терминальную команду. По детализации доступа - зависит от задачи.
Тут однозначно правильного ответа нет, если вам так больше подходит - вполне себе вариант.